IOCTL_STORAGE_PREDICT_FAILURE IOCTL (ntddstor.h)
Fragt nach einer Vorhersage des Gerätefehlers ab. Diese Anforderung funktioniert mit den IDE-Festplattenlaufwerken, die die Selbstüberwachungsanalyse und Berichterstellungstechnologie (SMART) unterstützen. Wenn das Laufwerk ein SCSI-Laufwerk ist, versucht der Klassentreiber zu überprüfen, ob der SCSI-Datenträger die entsprechende IDE SMART-Technologie unterstützt, indem die Untersuchungsinformationen auf der Seite zur Informationsausnahmesteuerung, X3T10/94-190 Rev 4, überprüft werden.
Wenn das Gerät Vorhersagefehler unterstützt, fragt der Datenträgerklassentreiber das Gerät nach dem Status der Fehlervorhersage ab und meldet die Ergebnisse. Wenn der Datenträgerklassentreiber dem PredictFailure Member von STORAGE_PREDICT_FAILURE im Ausgabepuffer bei Irp->AssociatedIrp.SystemBuffereinen Ungleichwert zuweist, weist der Datenträger fehlerhafte Sektoren auf und prognostiziert einen Fehler. Der Speicherstapel gibt 512 Byte anbieterspezifische Informationen zur Fehlervorhersage im VendorSpecific- Mitglied von STORAGE_PREDICT_FAILURE zurück.
Wenn das PredictFailure Member einen Wert von Null enthält, wird kein Fehler vom Datenträger vorhergesagt.
Wenn das Gerät die Fehlervorhersage nicht unterstützt, schlägt IOCTL_STORAGE_PREDICT_FAILURE mit einem Status von STATUS_INVALID_DEVICE_REQUEST fehl, und die Daten im Ausgabepuffer sind nicht definiert.
Andere Methoden zum Überprüfen auf Datenträgerfehler sind die Überwachung des Ereignisprotokolls und die Registrierung zum Empfangen eines WMI-Ereignisses mit WMI_STORAGE_PREDICT_FAILURE_EVENT_GUID.
Hauptcode
Eingabepuffer
Nichts.
Eingabepufferlänge
Nichts.
Ausgabepuffer
Der Treiber gibt eine STORAGE_PREDICT_FAILURE Struktur zurück, die Fehlervorhersagedaten im Puffer bei Irp->AssociatedIrp.SystemBufferenthält.
Länge des Ausgabepuffers
Parameters.DeviceIoControl.OutputBufferLength gibt die Größe des Puffers bei Irp->AssociatedIrp.SystemBuffer an, die größer oder gleich der Größe(STORAGE_PREDICT_FAILURE) sein muss.
Statusblock
Irp->IoStatus.Status auf STATUS_SUCCESS festgelegt ist, wenn die Anforderung erfolgreich ist. Andernfalls Status der entsprechenden Fehlerbedingung als NTSTATUS- Code.
Anforderungen
Anforderung | Wert |
---|---|
Header- | ntddstor.h (include Ntddstor.h) |