WdfDeviceConfigureWdmIrpDispatchCallback 関数 (wdfdevice.h)
[KMDF と UMDF に適用]
WdfDeviceConfigureWdmIrpDispatchCallback メソッドは、ドライバーの EvtDeviceWdmIrpDispatch コールバック関数を登録します。
構文
NTSTATUS WdfDeviceConfigureWdmIrpDispatchCallback(
[in] WDFDEVICE Device,
[in, optional] WDFDRIVER Driver,
[in] UCHAR MajorFunction,
PFN_WDFDEVICE_WDM_IRP_DISPATCH EvtDeviceWdmIrpDispatch,
[in, optional] WDFCONTEXT DriverContext
);
パラメーター
[in] Device
フレームワーク デバイス オブジェクトへのハンドル。
[in, optional] Driver
WdfDriverCreate または WdfGetDriver の以前の呼び出しからドライバーが取得したドライバーのフレームワーク ドライバー オブジェクトへのハンドル。 このパラメーターは省略可能です。
[in] MajorFunction
IRP の主要な関数コードの 1 つ: IRP_MJ_DEVICE_CONTROL、IRP_MJ_INTERNAL_DEVICE_CONTROL、IRP_MJ_READ、IRP_MJ_WRITE。
EvtDeviceWdmIrpDispatch
ドライバーの EvtDeviceWdmIrpDispatch コールバック関数へのポインター。
[in, optional] DriverContext
フレームワークがドライバーの EvtDeviceWdmIrpDispatch コールバック関数に渡す、ドライバー定義のコンテキスト情報への型指定されていないポインター。 このパラメーターは省略可能であり、NULL にすることができます。
戻り値
WdfDeviceConfigureWdmIrpDispatchCallback メソッドでエラーが発生しない場合は、STATUS_SUCCESSを返します。 その他の戻り値は次のとおりです。
リターン コード | 説明 |
---|---|
|
無効な MajorFunction 値が指定されました。 |
|
メモリが不足していました。 |
注釈
ドライバーは 、WdfDeviceConfigureWdmIrpDispatchCallback メソッドを呼び出して 、EvtDeviceWdmIrpDispatch コールバック関数を登録します。 フレームワークは、このメソッドの MajorFunction パラメーターに一致する IRP の主要な関数コードを含む I/O 要求パケット (IRP) を受信するたびに EvtDeviceWdmIrpDispatch を呼び出します。
ドライバーは通常、EvtDriverDeviceAdd コールバック関数から WdfDeviceConfigureWdmIrpDispatchCallback を呼び出します。
ドライバーがコールバック関数を登録する MJ 関数ごとに 、WdfDeviceConfigureWdmIrpDispatchCallback を 1 回呼び出す必要があります。 つまり、複数の MJ 関数をインターセプトするために複数の呼び出しが必要です。
ドライバーは、次の理由で WdfDeviceConfigureWdmIrpDispatchCallback メソッドを呼び出す場合があります。
- IRP を調べて、ドメイン固有の条件に基づいて特定のキューに割り当てるには (たとえば、ファイル オブジェクトに関連付けられているすべての I/O を特定のキューに転送します)。
- 個々の要求に基づいてを選択するには、 EvtIoInCallerContext コールバック関数を呼び出す必要があります。
IRP の受信時のキューの指定の詳細については、「 I/O キューへの IRP のディスパッチ」を参照してください。
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.11 |
最小 UMDF バージョン | 2.17 |
Header | wdfdevice.h (Wdf.h を含む) |
Library | Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI コンプライアンス規則 | DriverCreate(kmdf) |