中間ドライバーでの IRP の設定
ファイルシステムドライバーとリムーバブルメディアデバイスドライバーの間に階層化された中間ドライバーは、IRPで次の下位ドライバーのI/Oスタック位置を設定する必要があります。 IRP_MJ_READ、 IRP_MJ_WRITE、 および IRP_MJ_DEVICE_CONTROL 要求から、中間ドライバーは、下位ドライバーのI/Oスタック位置を設定するときに、自身のI/Oスタック位置 Flags を次の下位ドライバーのI/Oスタック位置にコピーしなければなりません。
中間ドライバーが下位レベルのリムーバブルメディア ドライバーに新しい IRP を割り当てる場合、それらのIRPを次のように設定する必要があります:
転送要求の場合、ドライバーが割り当てた各IRPのスレッドコンテキストを、元のIRPの Tail.Overlay.Thread の値から設定する必要があります。
IRP_MJ_READ、 IRP_MJ_WRITE、 および IRP_MJ_DEVICE_CONTROL 要求では、元のIRPから各ドライバー割り当てIRPにI/Oスタック位置 Flags をコピーする必要があります。
そうでなければ、ファイルシステムはキャッシュされたファイルデータの整合性を保持することも、開いているファイルを保持するメディアの再マウントをユーザーに促すこともできません。