IOCTL_STORAGE_PREDICT_FAILURE IOCTL (ntddstor.h)
轮询设备故障预测。 此请求适用于支持自监视分析和报告技术的 IDE 磁盘驱动器 (SMART) 。 如果驱动器是 SCSI 驱动器,则类驱动程序尝试通过检查信息异常控制页 X3T10/94-190 Rev 4 上的查询信息来验证 SCSI 磁盘是否支持等效的 IDE SMART 技术。
如果设备支持预测失败,则磁盘类驱动程序会查询设备的故障预测状态并报告结果。 如果磁盘类驱动程序将非零值分配给 Irp-AssociatedIrp.SystemBuffer> 输出缓冲区中STORAGE_PREDICT_FAILURE的 PredictFailure 成员,则磁盘具有坏扇区,并且正在预测故障。 存储堆栈返回 512 字节的供应商特定信息,这些信息与 STORAGE_PREDICT_FAILURE 的 VendorSpecific 成员中的故障预测有关。
如果 PredictFailure 成员包含的值为零,则磁盘不会预测故障。
如果设备不支持故障预测,IOCTL_STORAGE_PREDICT_FAILURE失败,状态为STATUS_INVALID_DEVICE_REQUEST,并且输出缓冲区中的数据未定义
检查磁盘故障的其他方法包括监视事件日志和注册以使用WMI_STORAGE_PREDICT_FAILURE_EVENT_GUID接收 WMI 事件。
主要代码
输入缓冲区
无。
输入缓冲区长度
无。
输出缓冲区
驱动程序返回一个STORAGE_PREDICT_FAILURE结构,其中包含 Irp-AssociatedIrp.SystemBuffer> 缓冲区中的故障预测数据。
输出缓冲区长度
Parameters.DeviceIoControl.OutputBufferLength 指示 Irp-AssociatedIrp.SystemBuffer> 上的缓冲区的大小(以字节为单位),该大小必须大于或等于 (STORAGE_PREDICT_FAILURE) 的大小。
状态块
Irp->如果请求成功,IoStatus.Status 设置为 STATUS_SUCCESS。 否则, 状态 为相应的错误条件作为 NTSTATUS 代码。
要求
要求 | 值 |
---|---|
Header | ntddstor.h (包括 Ntddstor.h) |