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 请求数据包时调用 EvtDeviceWdmIrpDispatch , (IRP) 包含与此方法的 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) |
Library | Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | DriverCreate (kmdf) |