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 主要函式程式代碼: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。 其他傳回值包括:
傳回碼 | Description |
---|---|
|
已提供無效 的 MajorFunction 值。 |
|
記憶體不足。 |
備註
驅動程式會呼叫 WdfDeviceConfigureWdmIrpDispatchCallback 方法來註冊 EvtDeviceWdmIrpDispatch 回呼函式。 架構接著會在收到 I/O 要求封包時呼叫 EvtDeviceWdmIrpDispatch (IRP) 包含符合此方法 MajorFunction 參數的 IRP 主要函式程式代碼。
驅動程式通常會從其 EvtDriverDeviceAdd 回呼函式呼叫 WdfDeviceConfigureWdmIrpDispatchCallback。
您必須針對驅動程式想要註冊回呼函式的每個 MJ 函式呼叫 WdfDeviceConfigureWdmIrpDispatchCallback 一次。 換句話說,攔截多個 MJ 函式需要多個呼叫。
驅動程式可能會基於下列原因呼叫 WdfDeviceConfigureWdmIrpDispatchCallback 方法:
- 若要檢查 IRP,並根據特定網域準則將它指派給特定佇列,例如,將所有與檔案對象相關聯的 I/O 導向至特定佇列。
- 若要根據個別要求選取,您必須呼叫 EvtIoInCallerContext 回呼 函式。
如需在 IRP 抵達時指定佇列的詳細資訊,請參閱 將 IRP 分派給 I/O 佇列。
規格需求
需求 | 值 |
---|---|
目標平台 | Universal |
最低 KMDF 版本 | 1.11 |
最低UMDF版本 | 2.17 |
標頭 | wdfdevice.h (包含 Wdf.h) |
程式庫 | Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI 合規性規則 | DriverCreate (kmdf) |