IRP_MJ_CLEANUP
プロセス固有のコンテキスト情報を保持するドライバーは、DispatchCleanup ルーチンでクリーンアップ要求を処理する必要があります。
送信時
この要求の受信は、ターゲット デバイス オブジェクトに関連付けられているファイル オブジェクトの最後のハンドルが閉じられたことを示します (ただし、未処理の I/O 要求のため、解放されていない可能性があります)。
入力パラメーター
なし
出力パラメーター
なし
操作
この IRP は、ファイル オブジェクト ハンドルを閉じたプロセスのコンテキストで送信されます。 そのため、ドライバーは、以前にロックまたはマップしたユーザー メモリなどのプロセス固有のリソースを解放する必要があります。
一度にデバイスを使用できるのが 1 つのスレッドのみになるように、ドライバーのデバイス オブジェクトが排他的として設定されている場合は、ドライバーは、ターゲット デバイス オブジェクトで現在キューに登録されているすべての IRP を完了し、各 IRP の I/O 状態ブロックに STATUS_CANCELLED を設定する必要があります。
それ以外の場合は、ドライバーは、解放されるファイル オブジェクト ハンドルに関連付けられている、現在キューに登録されている IRP のみをキャンセルして完了させる必要があります。 (ファイル オブジェクトへのポインターは、IRP のドライバーの IO_STACK_LOCATION の FileObject メンバーにあります。) これらのキューに登録された IRP を取り消した後、ドライバーは、クリーンアップ IRP を完了し、I/O 状態ブロックに STATUS_SUCCESS を設定します。
この要求の処理の詳細については、「DispatchCleanup ルーチン」を参照してください。
要件
ヘッダー |
Wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |