次の方法で共有


IRP_MJ_CLEANUP

プロセス固有のコンテキスト情報を保持するドライバーは、DispatchCleanup ルーチンでクリーンアップ要求を処理する必要があります。

送信時

この要求の受信は、ターゲット デバイス オブジェクトに関連付けられているファイル オブジェクトの最後のハンドルが閉じられたことを示します (ただし、未処理の I/O 要求のため、解放されていない可能性があります)。

入力パラメーター

なし

出力パラメーター

なし

操作

この IRP は、ファイル オブジェクト ハンドルを閉じたプロセスのコンテキストで送信されます。 そのため、ドライバーは、以前にロックまたはマップしたユーザー メモリなどのプロセス固有のリソースを解放する必要があります。

一度にデバイスを使用できるのが 1 つのスレッドのみになるように、ドライバーのデバイス オブジェクトが排他的として設定されている場合は、ドライバーは、ターゲット デバイス オブジェクトで現在キューに登録されているすべての IRP を完了し、各 IRP の I/O 状態ブロックに STATUS_CANCELLED を設定する必要があります。

それ以外の場合は、ドライバーは、解放されるファイル オブジェクト ハンドルに関連付けられている、現在キューに登録されている IRP のみをキャンセルして完了させる必要があります。 (ファイル オブジェクトへのポインターは、IRP のドライバーの IO_STACK_LOCATIONFileObject メンバーにあります。) これらのキューに登録された IRP を取り消した後、ドライバーは、クリーンアップ IRP を完了し、I/O 状態ブロックに STATUS_SUCCESS を設定します。

この要求の処理の詳細については、「DispatchCleanup ルーチン」を参照してください。

要件

ヘッダー

Wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)

関連項目

DispatchCleanup

IO_STACK_LOCATION

IRP_MJ_CLOSE