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

驅動程式架構驅動程序物件的句柄,該驅動程式是從先前呼叫 WdfDriverCreateWdfGetDriver 取得的。 這是選擇性參數。

[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
STATUS_INVALID_PARAMETER
已提供無效 的 MajorFunction 值。
STATUS_INSUFFICIENT_RESOURCES
記憶體不足。

備註

驅動程式會呼叫 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)

另請參閱

EvtDeviceWdmIrpDispatch

WdfDeviceWdmDispatchIrp

WdfDeviceWdmDispatchIrpToIoQueue