次の方法で共有


フレームワークの外部での WDM IRP の処理

[KMDF のみに適用]

I/O マネージャーが I/O リクエストパケット (IRP) をフレームワーク ベースのドライバーに配信すると、フレームワークは IRP をインターセプトし、次のいずれかの処理を行います:

  • IRP を処理します。 たとえば、フレームワークは、IRP_MJ_PNPIRP_MJ_POWER主要な I/O 関数コードを含むIRPsを処理します。 これらの IRPs の処理中に、フレームワークはドライバーのイベント コールバック関数を呼び出すことによってドライバーと通信する可能性があります。

  • ドライバーが(通常はリクエストハンドラーで)受信して処理できるように、IRP のフレームワークリクエストオブジェクトを作成し、リクエストオブジェクトをドライバーの I/O キューのいずれかに配信します。 フレームワークは、この方法で読み取り、書き込み、およびデバイスの I/O 制御リクエストを処理します。

  • IRP には、フレームワークがサポートしていない I/O 関数コードが含まれているため、IRP を次の下位ドライバーに渡すか (ドライバーがフィルター ドライバーである場合) 、状態値STATUS_INVALID_DEVICE_REQUESTで IRP を完了します (ドライバーがフィルター ドライバーでない場合)。

場合によっては、ドライバーは、フレームワークがサポートしていない I/O 関数コードを処理する必要があります。

まれに、ドライバーは、フレームワークが処理する前に IRP を前処理する必要があります。または、ドライバーは、フレームワークと下位レベルのドライバーが処理を完了した後に IRP を後処理する必要があります。

前処理の一環として、ドライバーは、特定の I/O キューに IRP を転送する必要があります。

次のトピックでは、これらの状況について説明します: