次の方法で共有


フレームワークでサポートされていない IRP の処理

[KMDF のみに適用]

フレームワークは、次の主要な IRP コードを持つ I/O リクエストをサポートしていません。

フレームワークがこれらの I/O 関数コードのいずれかを含む IRP を受信した場合、フレームワークは IRP を処理しません。 ドライバーがフィルター ドライバーである場合、フレームワークは、ドライバー スタック内の次の下位ドライバーに IRP を渡します。 ドライバーがフィルター ドライバーでない場合、フレームワークはIoCompleteRequestを呼び出して、STATUS_INVALID_DEVICE_REQUESTのステータス値でIRPを完了します。

ドライバーがこれらの I/O 関数コードのいずれかを含む IRP を処理する必要がある場合、ドライバーは WdfDeviceInitAssignWdmIrpPreprocessCallbackを呼び出して、 I/O 関数コード用のEvtDeviceWdmIrpPreprocessイベント コールバック関数を登録する必要があります。

ドライバーがEvtDeviceWdmIrpPreprocessコールバック関数を登録したI/O 関数コードを含む IRP を受信した場合、フレームワークは IRP をコールバック関数に渡します。 コールバック関数は、 IRPsを処理するための WDM ルールに従ってIRPを処理する必要があります。 ドライバーは、IRP を完了するためにIoCompleteRequestを呼び出す必要があります。または、次の下位ドライバーに IRP を渡すためにIoCallDriverを呼び出す必要があります。

フレームワークがサポートしていない IRP を処理するEvtDeviceWdmIrpPreprocess コールバック関数の例については、 シリアルサンプル ドライバーをご参照ください。