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。 其他返回值包括:
返回代码 | 描述 |
---|---|
|
提供了无效的 MajorFunction 值。 |
|
内存不足。 |
言论
驱动程序调用 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) |