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。 其他返回值包括:

返回代码 描述
STATUS_INVALID_PARAMETER
提供了无效的 MajorFunction 值。
STATUS_INSUFFICIENT_RESOURCES
内存不足。

言论

驱动程序调用 WdfDeviceConfigureWdmIrpDispatchCallback 方法注册 EvtDeviceWdmIrpDispatch 回调函数。 然后,每当收到 I/O 请求数据包(IRP)时,该框架将调用 EvtDeviceWdmIrpDispatch,其中包含与此方法的 MajorFunction 参数匹配的 IRP 主函数代码。

驱动程序通常从 EvtDriverDeviceAdd 回调函数调用 WdfDeviceConfigureWdmIrpDispatchCallback

对于驱动程序要为其注册回调函数的每个 MJ 函数,必须调用 WdfDeviceConfigureWdmIrpDispatchCallback 一次。 换句话说,截获多个 MJ 函数需要多个调用。

驱动程序可能会出于以下原因调用 WdfDeviceConfigureWdmIrpDispatchCallback 方法:

  • 若要检查 IRP,并根据特定于域的条件将其分配给特定队列,例如,将与文件对象关联的所有 I/O 定向到特定队列。
  • 若要根据单个请求进行选择,需要调用 EvtIoInCallerContext 回调函数。

有关在 IRP 到达时指定队列的详细信息,请参阅 将 IRP 调度到 I/O 队列

要求

要求 价值
目标平台 普遍
最低 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