IOCTL_STORAGE_PREDICT_FAILURE IOCTL (ntddstor.h)
デバイス障害の予測をポーリングします。 この要求は、自己監視分析およびレポート テクノロジ (SMART) をサポートする IDE ディスク ドライブで機能します。 ドライブが SCSI ドライブの場合、クラス ドライバーは、情報例外制御ページ X3T10/94-190 Rev 4 の問い合わせ情報を確認することで、SCSI ディスクが同等の IDE SMART テクノロジをサポートしているかどうかを確認しようとします。
デバイスで予測エラーがサポートされている場合、ディスク クラス ドライバーはデバイスにエラー予測の状態を照会し、結果を報告します。 ディスク クラス ドライバーが、Irp->AssociatedIrp.SystemBufferの出力バッファー内の STORAGE_PREDICT_FAILURE の PredictFailure メンバーに 0 以外の値を割り当てると、ディスクに不良セクターがあり、障害が予測されます。 ストレージ スタックは、STORAGE_PREDICT_FAILUREの VendorSpecific メンバーのエラー予測に関するベンダー固有の情報を 512 バイト返します。
PredictFailure メンバーに 0 の値が含まれている場合、ディスクは障害を予測していません。
デバイスが障害予測をサポートしていない場合、IOCTL_STORAGE_PREDICT_FAILUREはSTATUS_INVALID_DEVICE_REQUESTの状態で失敗し、出力バッファー内のデータは未定義です
ディスクの障害を確認するその他の方法としては、イベント ログの監視や、WMI_STORAGE_PREDICT_FAILURE_EVENT_GUIDを使用した WMI イベントの受信登録などがあります。
メジャー コード
入力バッファー
何一つ。
入力バッファーの長さ
何一つ。
出力バッファー
ドライバーは、Irp->AssociatedIrp.SystemBuffer でバッファー内のエラー予測データ含む STORAGE_PREDICT_FAILURE 構造体を返します。
出力バッファーの長さ
Parameters.DeviceIoControl.OutputBufferLength は、Irp->AssociatedIrp.SystemBuffer バッファーのサイズ (バイト単位) を示、のsizeof (STORAGE_PREDICT_FAILURE) 以上である必要があります。
状態ブロック
Irp->IoStatus.Status は、要求が成功した場合にSTATUS_SUCCESSに設定されます。 それ以外の場合は、状態 NTSTATUS コードとして適切なエラー状態に します。
必要条件
要件 | 価値 |
---|---|
ヘッダー | ntddstor.h (Ntddstor.h を含む) |