次の方法で共有


IOCTL_STORAGE_CHECK_VERIFY IOCTL (ntddstor.h)

呼び出し元が読み取りまたは書き込みアクセスのために開いたリムーバブル メディア デバイスでメディアが変更されたかどうかを判断します。 デバイスへの読み取りまたは書き込みアクセスが不要な場合、呼び出し元は、FILE_READ_ATTRIBUTESでデバイスを開き、代わりにIOCTL_STORAGE_CHECK_VERIFY2 要求を発行することで、パフォーマンスを向上させることができます。

詳細については、「リムーバブル メディア のサポート」を参照してください。

メジャー コード

IRP_MJ_DEVICE_CONTROL

入力バッファー

何一つ。

入力バッファーの長さ

何一つ。

出力バッファー

必要に応じて、ディスクデバイスと CD-ROM デバイスの場合、Irp->AssociatedIrp.SystemBuffer は、メディア変更数を受信するバッファーを指します。 ドライバーは、Parameters.DeviceIoControl.OutputBufferLength が 0 以外で、戻り値がSTATUS_SUCCESS場合にのみ、このバッファーを埋めます。 メディアの変更数は、ドライバーの起動後にメディアが変更された回数を示す ULONG です。

それ以外の場合、この要求には出力がありません。

出力バッファーの長さ

必要に応じて、ディスクデバイスと CD-ROM デバイスの場合、IRP の I/O スタック位置に parameters.DeviceIoControl.OutputBufferLength すると、バッファーのサイズ (バイト単位) が示されます。これは、>= sizeof(ULONG) である必要があります。 省略可能なバッファーが指定されていない場合、このフィールドは 0 です。

それ以外の場合、この要求には入力がありません。

状態ブロック

ディスクまたは CD-ROM ドライバーがメディアが変更されたことを示していない場合、ドライバーは [状態] フィールドをSTATUS_SUCCESSに設定します。 さらに、オプションのメディア変更バッファーを指定した場合、ドライバーは、バッファー内のメディア変更数を返します Irp->AssociatedIrp.SystemBuffer し、情報 フィールドを sizeof(ULONG) に設定します。 オプションのメディア変更バッファーが指定されていない場合、ドライバーは 情報 を 0 に設定します。

メディアが変更され、ボリュームがマウントされていることをドライバーが検出した場合 (VPB に設定VPB_MOUNTED)、次のことが必要です。

  1. 情報 を 0 に設定します。
  2. [状態 をSTATUS_VERIFY_REQUIREDに設定します。
  3. DeviceObject でDO_VERIFY_VOLUME フラグを設定します。
  4. 入力 IRP IoCompleteRequest を呼び出します。
メディアが変更されたが、ボリュームがマウントされていないことがドライバーで検出された場合、ドライバーはDO_VERIFY_VOLUME ビットを設定してはなりません。 代わりに、次の操作を行う必要があります。
  1. [状態 をSTATUS_IO_DEVICE_ERRORに設定します。
  2. 情報 を 0 に設定します。
  3. IRP IoCompleteRequest を呼び出します。
ドライバーは、STATUS_BUFFER_TOO_SMALL、STATUS_INSUFFICIENT_RESOURCES、またはデバイス エラーなどのエラーを検出した場合、情報 を 0 に設定し、状態 フィールドに適切なエラー値を設定します。

テープ・ドライバーの場合、情報・フィールドはゼロに設定され、状況・フィールドはSTATUS_SUCCESSに設定されるか、場合によってはSTATUS_VERIFY_REQUIREDに設定されます。

必要条件

要件 価値
ヘッダー ntddstor.h (Ntddstor.h を含む)

関連項目

IOCTL_STORAGE_CHECK_VERIFY2