IRP_MJ_CLOSE
システムを停止することなくデバイスを無効にすることや、コンピューターから削除することができないドライバーを除いて、すべてのドライバーは、DispatchClose ルーチンで閉じる要求を処理する必要があります。 このようなドライバーの例として、デバイスがシステム ページ ファイルを保持しているディスク ドライバーがあります。 このようなデバイスのドライバーも動的にアンロードできないことに留意してください。
送信時
この要求の受信は、ターゲット デバイス オブジェクトに関連付けられているファイル オブジェクトの最後のハンドルが閉じられ、解放されたことを示しています。 未処理のすべての I/O 要求は、完了済みになるか、取り消されます。
入力パラメーター
なし
出力パラメーター
なし
操作
多くのデバイス ドライバーと中間ドライバーは、単に IRP の I/O 状態ブロックに STATUS_SUCCESS 設定し、閉じる要求を完了するだけです。 ただし、特定のドライバーが閉じる要求を受け取ったときに行う処理は、ドライバーの設計によって異なります。 一般に、ドライバーは、IRP_MJ_CREATE 要求の受信時に実行する操作を元に戻す必要があります。 シリアル ドライバーなど、デバイス オブジェクトが排他的なデバイス ドライバーは、閉じる要求の受信時に、ハードウェアをリセットすることもできます。
IRP_MJ_CLOSE 要求は、必ずしもファイル オブジェクト ハンドルを閉じたプロセスのコンテキストで送信されるとは限りません。 ドライバーは、以前にロックまたはマップされたプロセス固有のリソース (ユーザー メモリなど) を解放する必要がある場合は、IRP_MJ_CLEANUP 要求に応答して解放する必要があります。
IRP_MJ_CLOSE 要求は常に PASSIVE_LEVEL に送信されます。
要件
ヘッダー |
Wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |