デバイス オブジェクトのフラグの確認
リムーバブル メディアとの間の I/O 操作を要求する IRP ごとに、リムーバブル メディア デバイス ドライバーは、DO_VERIFY_VOLUMEがDeviceObject->Flags に既に設定されているかどうかを判断する必要があります。 この値が設定されている場合、ドライバーは次の操作を行う必要があります。
IRP_MJ_READ、IRP_MJ_WRITE、およびIRP_MJ_DEVICE_CONTROL要求の場合、ドライバーのIO_STACK_LOCATION構造体の Flags メンバーに SL_OVERRIDE_VERIFY_VOLUME が設定されているかどうかをチェックします。 その場合は、要求された操作を続行します。
基礎となるメディアの論理構造に関する情報を戻すデバイス制御要求は、IFS がリムーバブル・メディア・ボリュームをマウントまたは再マウントするときに、入出力スタック・ロケーションのFlagsメンバー SL_OVERRIDE_VERIFY_VOLUME設定されます。
それ以外の場合、ドライバーは、DO_VERIFY_VOLUME が DeviceObject->Flagsで設定されている間、対応するドライブ、デバイス、またはパーティションの I/O 要求の実行を拒否する必要があります。 リムーバブル メディア ドライバーは、FSD がリムーバブル メディア ドライバーの DeviceObject->FlagsでDO_VERIFY_VOLUMEをクリアするまで、対応するデバイスに送信された IRP を失敗させる必要があります。
リムーバブル メディア デバイス ドライバーが DO_VERIFY_VOLUME が設定され、前の転送要求に対して SL_OVERRIDE_VERIFY_VOLUME が設定されていない場合、ファイル システムはキャッシュされたファイル データの整合性を維持できず、開いているファイルを保持しているメディアを再マウントするようにユーザーに求めることもできません。