Freigeben über


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

IRP_MJ_DEVICE_CONTROL

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)

Weitere Informationen

STORAGE_PREDICT_FAILURE