AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

S.M.A.R.T - IDE Details

Ein Thema von Metal_Snake2 · begonnen am 13. Feb 2008 · letzter Beitrag vom 16. Feb 2008
Antwort Antwort
Metal_Snake2

Registriert seit: 19. Nov 2004
134 Beiträge
 
Delphi 7 Personal
 
#1

S.M.A.R.T - IDE Details

  Alt 13. Feb 2008, 19:07
Hallo,

ich möchte gerne über die S.M.A.R.T schnitstelle IDE- Festplatten datails wie z.B. unterstützte Features auslesen.
Ich hab auch schon viele codeschnipsel gefunden jedoch ist keine von denen wirklich vollständig.
Hat jemand ne ahnung wo ich eine Dokumentation zur schnittstelle finde? Ideal auch für SCSI.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

Re: S.M.A.R.T - IDE Details

  Alt 13. Feb 2008, 19:58
Hier in diesen Beitrag findest Du schonmal ein Beispiel, weitere Beiträge gibt es über die Suche Hier im Forum suchenSMART
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Metal_Snake2

Registriert seit: 19. Nov 2004
134 Beiträge
 
Delphi 7 Personal
 
#3

Re: S.M.A.R.T - IDE Details

  Alt 13. Feb 2008, 20:01
danke für die antwort, aber ich kannte schon den thread. Wo bekomme ich z.B. ne vollständige Smart tabelle?
Oder wie kann ich die ATA- Kommandos auslesen welche unterstützt werden?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: S.M.A.R.T - IDE Details

  Alt 13. Feb 2008, 21:53
Schonmal einen Blick in die ATA Spezifikation geworfen? Es gibt keine Tabelle oder Informationen mit einer Liste der unterstützten Befehle. Du kannst nur die Befehle in das Command Register absetzen und dann das Status Register abprüfen ob er das ganze erfolgreich ausgeführt hat oder er einen Fehler liefert.

Was ist eine "vollständige SMART Tabelle"? Was soll an den Codes fehlen bzw. nicht klappen, die verlinkt wurden?
  Mit Zitat antworten Zitat
HERMES

Registriert seit: 29. Nov 2004
142 Beiträge
 
#5

Re: S.M.A.R.T - IDE Details

  Alt 14. Feb 2008, 17:10
Es gab mal von der CT eine Programm(incl. Source), das das alles konnte. Es war zwar in C++ geschrieben, aber ich denke man könnte sich dennoch davon inspirieren lassen. Ob man es noch bekommt weis ich leider nicht.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

Re: S.M.A.R.T - IDE Details

  Alt 15. Feb 2008, 06:34
Suchst Du vielleicht sowas ? Wenn Du in Google nach Bei Google suchens.m.a.r.t. festplatte suchst, dann bekommst Du einige Links zu dem Thema.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
axellang

Registriert seit: 3. Mai 2003
Ort: München
138 Beiträge
 
Delphi XE2 Enterprise
 
#7

Re: S.M.A.R.T - IDE Details

  Alt 15. Feb 2008, 08:53
Siehe hier:

http://de.wikipedia.org/wiki/S.M.A.R.T

Axel
Alexander Lang
  Mit Zitat antworten Zitat
Metal_Snake2

Registriert seit: 19. Nov 2004
134 Beiträge
 
Delphi 7 Personal
 
#8

Re: S.M.A.R.T - IDE Details

  Alt 16. Feb 2008, 12:44
Mit der nicht vollständigen Tabelle meine ich sowas hier klack

@Muetze1
absulut richtig was du da erzählst, genach das werde ich tuhn!!

@HERMES
den beispielcode habe ich gefunden, genau das was Muetze1 beschrieben hatte kann ich damit machen.

Danke für alle antworten!!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: S.M.A.R.T - IDE Details

  Alt 16. Feb 2008, 15:22
Zitat von Metal_Snake2:
Mit der nicht vollständigen Tabelle meine ich sowas hier klack
Die SMART Tabelle bzw. die Identifier die die Festplatten zurück liefern sind herstellerspezifisch und leider kocht auch jeder Hersteller seine eigene Suppe. Zum Teil haben sich diese Definitionen zwischen den Modellserien beim gleichen Hersteller verändert. Es ist so, dass die meisten (nicht alle, nicht vollständig) ein paar IDs gleich belegen. Aber schon bei der Laufwerkstemperatur gibt es Unterschiede (Grad, eigene Einheiten, etc).

Delphi-Quellcode:
//
//---------------------------------------------------------------------
// Valid Attribute IDs
//---------------------------------------------------------------------
Const
  ATTR_INVALID = 0;
  ATTR_READ_ERROR_RATE = 1;
  ATTR_THROUGHPUT_PERF = 2;
  ATTR_SPIN_UP_TIME = 3;
  ATTR_START_STOP_COUNT = 4;
  ATTR_REALLOC_SECTOR_COUNT = 5;
  ATTR_READ_CHANNEL_MARGIN = 6;
  ATTR_SEEK_ERROR_RATE = 7;
  ATTR_SEEK_TIME_PERF = 8;
  ATTR_POWER_ON_HRS_COUNT = 9;
  ATTR_SPIN_RETRY_COUNT = 10;
  ATTR_CALIBRATION_RETRY_COUNT = 11;
  ATTR_POWER_CYCLE_COUNT = 12;
  ATTR_EMERGENCY_RETRACT_CYCLE = 192 ; // C0
  ATTR_LOAD_CYCLE_COUNT = 193 ; // C1
  ATTR_TEMPERATURE_CELCIUS = 194 ; // C2
  ATTR_HARDWARE_ECC = 195 ; // C3
  ATTR_REALLOCATION_EVENT_COUNT = 196 ; // C4
  ATTR_CURRENT_PENDING_SECTOR = 197 ; // C5
  ATTR_OFF_LINE_UNCORRECTABLE = 198 ; // C6
  ATTR_ULTRA_ATA_CRC_ERROR_RATE = 199 ; // C7
  ATTR_MULTI_ZONE_ERROR_RATE = 200 ; // C8
  ATTR_SOFT_READ_ERROR_RATE = 201 ; // C9
  ATTR_OFF_TRACK_ERRORS = 201 ; // C9 - alternative Maxtor
  ATTR_TA_INCREASE_COUNT = 202 ; // CA
  ATTR_RUN_OUT_CANCEL = 203 ; // CB
  ATTR_ECC_ERRORS = 203 ; // CB - alternative Maxtor
  ATTR_SHOCK_COUNT_WRITE_OPS = 204 ; // CC
  ATTR_SHOCK_RATE_WRITE_OPS = 205 ; // CD
  ATTR_SPIN_HIGH_CURRENT = 207 ; // CE
  ATTR_SPIN_BUZZ = 208 ; // CF
  ATTR_OFFLINE_SEEK_PERF = 209 ; // D0

// Declare a global structure to help print the data.
// NOTE: Per ATA3 and ATA4 specs, these attribute definitions are defined by the drive vendor
// and hence their attributes may vary between vendors.
//
Type
  TAttrEntry = Record
    ID: Byte;
    Name: String;
  End;
Const
  coAttrNames : Array[0..31] Of TAttrEntry = (
                 ({00}ID: ATTR_INVALID; Name: 'No Attribute Here'),
                 ({01}ID: ATTR_READ_ERROR_RATE; Name: 'Raw Read Error Rate'),
                 ({02}ID: ATTR_THROUGHPUT_PERF; Name: 'Throughput Performance'),
                 ({03}ID: ATTR_SPIN_UP_TIME; Name: 'Spin Up Time'),
                 ({04}ID: ATTR_START_STOP_COUNT; Name: 'Start/Stop Count'),
                 ({05}ID: ATTR_REALLOC_SECTOR_COUNT; Name: 'Reallocated Sector Count'),
                 ({06}ID: ATTR_READ_CHANNEL_MARGIN; Name: 'Read Channel Margin'),
                 ({07}ID: ATTR_SEEK_ERROR_RATE; Name: 'Seek Error Rate'),
                 ({08}ID: ATTR_SEEK_TIME_PERF; Name: 'Seek Time Performance'),
                 ({09}ID: ATTR_POWER_ON_HRS_COUNT; Name: 'Power On Hours Count'),
                 ({10}ID: ATTR_SPIN_RETRY_COUNT; Name: 'Spin Retry Count'),
                 ({11}ID: ATTR_CALIBRATION_RETRY_COUNT; Name: 'Calibration Retry Count'),
                 ({12}ID: ATTR_POWER_CYCLE_COUNT; Name: 'Power Cycle Count'),
                 ({13}ID: ATTR_EMERGENCY_RETRACT_CYCLE; Name: 'Emergency Retract Cycle'),
                 ({14}ID: ATTR_LOAD_CYCLE_COUNT; Name: 'Load Cycle Count'),
                 ({15}ID: ATTR_TEMPERATURE_CELCIUS; Name: 'Temperature Celcius'),
                 ({16}ID: ATTR_HARDWARE_ECC; Name: 'Hardware ECC'),
                 ({17}ID: ATTR_REALLOCATION_EVENT_COUNT; Name: 'Reallocation Event Count'),
                 ({18}ID: ATTR_CURRENT_PENDING_SECTOR; Name: 'Current Pending Sector'),
                 ({19}ID: ATTR_OFF_LINE_UNCORRECTABLE; Name: 'Off Line Uncorrectable'),
                 ({20}ID: ATTR_ULTRA_ATA_CRC_ERROR_RATE; Name: 'UltraATA CRC Error Rate'),
                 ({21}ID: ATTR_MULTI_ZONE_ERROR_RATE; Name: 'Multi Zone Error Rate'),
                 ({22}ID: ATTR_SOFT_READ_ERROR_RATE; Name: 'Soft Read Error Rate'),
                 ({23}ID: ATTR_OFF_TRACK_ERRORS; Name: 'Off Track Errors'),
                 ({24}ID: ATTR_TA_INCREASE_COUNT; Name: 'TA Increase Count'),
                 ({25}ID: ATTR_RUN_OUT_CANCEL; Name: 'Run Out Cancel'),
                 ({26}ID: ATTR_ECC_ERRORS; Name: 'ECC Errors'),
                 ({27}ID: ATTR_SHOCK_COUNT_WRITE_OPS; Name: 'Shock Count Write Operations'),
                 ({28}ID: ATTR_SHOCK_RATE_WRITE_OPS; Name: 'Shock Rate Write Operations'),
                 ({29}ID: ATTR_SPIN_HIGH_CURRENT; Name: 'Spin High Current'),
                 ({30}ID: ATTR_SPIN_BUZZ; Name: 'Spin Buzz'),
                 ({31}ID: ATTR_OFFLINE_SEEK_PERF; Name: 'Offline Seek Performance') );
Beachte den Kommentar zuvor. Wenn du das im Detail haben willst, dann schau bei den Quellen der Linux smartmontools vorbei/rein.

Zitat von Metal_Snake2:
@Muetze1
absulut richtig was du da erzählst, genach das werde ich tuhn!!
Beachte, dass z.B. beim Schreiben eines Sektors er die Daten dann erwartet und da diese Zugriffe meistens asynchron arbeiten, kann dir Windows nach dem Absetzen des Befehls dazwischen funken und was anderes machen wollen und schon schreibst du unbedarft falsche Daten auf die Festplatte. Auch ist es fraglich, ob du die MultiWord DMA Modien über das von Windows gebotene Interface bedienen kannst. Auch beachte, dass manche Befehle erst nach einem Timeout als Fehler gemeldet werden.

Vor allem kann ich dir nur empfehlen das unter DOS zu machen, dann hast du mehr Sicherheiten beim direkten ansprechen als unter Windows, da bist du meist nur das 5. Rad am Wagen und hast meist das nachsehen bzw. nicht die für diese Aktion notwendige Sicherheiten.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz