IOCTL_STORAGE_PREDICT_FAILURE IOCTL (ntddstor.h)
Ruft eine Vorhersage von Gerätefehlern ab. Diese Anforderung funktioniert mit den IDE-Datenträgerlaufwerken, die die Selbstüberwachungsanalyse- und Berichterstellungstechnologie (SMART) unterstützen. Wenn es sich bei dem Laufwerk um ein SCSI-Laufwerk handelt, versucht der Klassentreiber zu überprüfen, ob der SCSI-Datenträger die entsprechende IDE SMART-Technologie unterstützt, indem er die Abfrageinformationen auf der Informationsausnahmesteuerungsseite X3T10/94-190 Rev 4 überprüft.
Wenn das Gerät Vorhersagefehler unterstützt, fragt der Datenträgerklassentreiber das Gerät nach einer Fehlervorhersage status ab und meldet die Ergebnisse. Wenn der Datenträgerklassentreiber dem PredictFailure-Member von STORAGE_PREDICT_FAILURE im Ausgabepuffer bei Irp-AssociatedIrp.SystemBuffer> einen Wert ungleich null zuweist, weist der Datenträger fehlerhafte Sektoren auf und sagt einen Fehler voraus. Der Speicherstapel gibt 512 Byte anbieterspezifische Informationen zur Fehlervorhersage im VendorSpecific-Member von STORAGE_PREDICT_FAILURE zurück.
Wenn das PredictFailure-Element den Wert 0 (null) enthält, sagt der Datenträger keinen Fehler voraus.
Wenn das Gerät keine Fehlervorhersage unterstützt, schlägt IOCTL_STORAGE_PREDICT_FAILURE mit einer status von STATUS_INVALID_DEVICE_REQUEST fehl, und die Daten im Ausgabepuffer sind nicht definiert.
Weitere Möglichkeiten zur Überprüfung auf Datenträgerfehler sind die Überwachung des Ereignisprotokolls und die Registrierung, um ein WMI-Ereignis mit WMI_STORAGE_PREDICT_FAILURE_EVENT_GUID zu empfangen.
Hauptcode
Eingabepuffer
Keine.
Länge des Eingabepuffers
Keine.
Ausgabepuffer
Der Treiber gibt eine STORAGE_PREDICT_FAILURE-Struktur zurück, die Fehlervorhersagedaten im Puffer bei Irp-AssociatedIrp.SystemBuffer> enthält.
Länge des Ausgabepuffers
Parameters.DeviceIoControl.OutputBufferLength gibt die Größe des Puffers bei Irp-AssociatedIrp.SystemBuffer> in Bytes an, die größer oder gleich der sizeof(STORAGE_PREDICT_FAILURE) sein muss.
Statusblock
Irp->IoStatus.Status wird auf STATUS_SUCCESS festgelegt, wenn die Anforderung erfolgreich ist. Andernfalls wird Status zur entsprechenden Fehlerbedingung als NTSTATUS-Code verwendet.
Anforderungen
Anforderung | Wert |
---|---|
Header | ntddstor.h (einschließen von Ntddstor.h) |