IRP の完了

"IRP の完了" は、"ドライバー スタックのすべてのメンバーが I/O 操作を完了できるようにする" ことを意味する省略形のフレーズです。IRP が完了すると、I/O マネージャーは、要求された I/O 操作が完了したことを発信側アプリケーションに通知します。

ドライバーが IRP の処理を完了すると、IoCompleteRequest(通常はDpcForIsrルーチン内から) が呼び出されます。 これにより、I/O マネージャーは、上位レベルのドライバーが IRP の IoCompletionルーチンを設定しているかどうかを判断します。 その場合は、チェーン内のすべての階層化されたドライバーが IRP を完了するまで、各 IoCompletion ルーチンが順番に呼び出されます。

すべてのドライバーが IRP を完了すると、I/O マネージャーは操作の元のリクエスターに状態を返します。 ドライバーが作成した IRP を設定する上位レベルのドライバーは、作成した IRP を解放するためにIoCompletionルーチンを提供する必要があることに注意してください。

このセクションでは、以下のトピックについて説明します:

IRP を完了するタイミング

ディスパッチ ルーチン内での IRP の完了

IoCompletion ルーチンの使用