IOCTL_STORAGE_PREDICT_FAILURE IOCTL (ntddstor.h)
Опрос на наличие прогноза сбоя устройства. Этот запрос работает с дисками IDE, которые поддерживают технологию анализа и создания отчетов (SMART) для самостоятельного мониторинга. Если диск является диском SCSI, драйвер класса пытается проверить, поддерживает ли диск SCSI эквивалентную технологию IDE SMART, проверка сведения о запросе на странице управления исключениями информации X3T10/94-190 rev 4.
Если устройство поддерживает сбой прогнозирования, драйвер класса диска запрашивает у устройства состояние прогнозирования сбоя и сообщает результаты. Если драйвер класса диска присваивает ненулевое значение элементу PredictFailureSTORAGE_PREDICT_FAILURE в выходном буфере по адресу Irp-AssociatedIrp.SystemBuffer>, диск имеет поврежденные секторы и прогнозирует сбой. Стек хранилища возвращает 512 байт сведений о конкретных поставщиках о прогнозе сбоев в элементе VendorSpecific STORAGE_PREDICT_FAILURE.
Если элемент PredictFailure содержит нулевое значение, диск не прогнозирует сбой.
Если устройство не поддерживает прогнозирование сбоев, IOCTL_STORAGE_PREDICT_FAILURE завершается сбоем с состоянием STATUS_INVALID_DEVICE_REQUEST, а данные в выходном буфере не заданы.
Другие способы проверки на сбой диска включают мониторинг журнала событий и регистрацию для получения события WMI с помощью WMI_STORAGE_PREDICT_FAILURE_EVENT_GUID.
Основной код
Входной буфер
Нет.
Длина входного буфера
Нет.
Выходной буфер
Драйвер возвращает STORAGE_PREDICT_FAILURE структуру, содержащую данные прогнозирования сбоев в буфере irp-AssociatedIrp.SystemBuffer>.
Длина выходного буфера
Parameters.DeviceIoControl.OutputBufferLength указывает размер буфера в байтах в Irp-AssociatedIrp.SystemBuffer>, который должен быть больше или равен sizeof(STORAGE_PREDICT_FAILURE).
Блок состояния
Irp->IoStatus.Status имеет значение STATUS_SUCCESS, если запрос выполнен успешно. В противном случае — состояние соответствующего условия ошибки в виде кода NTSTATUS .
Требования
Требование | Значение |
---|---|
Заголовок | ntddstor.h (включая Ntddstor.h) |