次の方法で共有


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> のバッファー内のメディア変更数を返し、Information フィールドを sizeof(ULONG) に設定します。 オプションのメディア変更バッファーが指定されていない場合、ドライバーは Information を 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 に設定し、[ 状態] フィールドに適切なエラー値を設定します。

テープ ドライバーの場合、[ 情報 ] フィールドは 0 に設定され、[ 状態] フィールドはSTATUS_SUCCESSに設定され、場合によっては STATUS_VERIFY_REQUIREDに設定されます。

要件

要件
Header ntddstor.h (Ntddstor.h を含む)

こちらもご覧ください

IOCTL_STORAGE_CHECK_VERIFY2