WdfDeviceConfigureRequestDispatching 函数 (wdfdevice.h)
[适用于 KMDF 和 UMDF]
WdfDeviceConfigureRequestDispatching 方法会导致框架将指定类型的 I/O 请求排队到指定的 I/O 队列。
语法
NTSTATUS WdfDeviceConfigureRequestDispatching(
[in] WDFDEVICE Device,
[in] WDFQUEUE Queue,
[in] WDF_REQUEST_TYPE RequestType
);
参数
[in] Device
为框架设备对象提供句柄。
[in] Queue
为框架队列对象提供句柄。
[in] RequestType
提供 WDF_REQUEST_TYPE类型枚举器,用于标识要排队的请求的类型。 唯一有效的枚举器是:
WdfRequestTypeCreate
WdfRequestTypeRead
WdfRequestTypeWrite
WdfRequestTypeDeviceControl
WdfRequestTypeDeviceControlInternal
返回值
如果作成功,该方法将返回STATUS_SUCCESS。 其他返回值包括:
返回代码 | 描述 |
---|---|
|
输入参数无效。 |
|
可用内存量过低。 |
|
驱动程序已将队列分配给指定的请求类型。 |
此方法可能会返回其他 NTSTATUS 值。
如果驱动程序提供无效的对象句柄,则会发生 bug 检查。
言论
每次调用 WdfDeviceConfigureRequestDispatching 指定一个请求类型。 如果希望单个 I/O 队列接收多种类型的请求(例如读取和写入请求),驱动程序可以针对单个 I/O 队列多次调用 WdfDeviceConfigureRequestDispatching。
有关 WdfDeviceConfigureRequestDispatching的详细信息,请参阅 创建 I/O 队列 和 管理 I/O 队列。
例子
下面的代码示例初始化 WDF_IO_QUEUE_CONFIG 结构,创建 I/O 队列,然后配置队列,以便接收写入请求。
WDF_IO_QUEUE_CONFIG queueConfig;
WDFQUEUE WriteQueue;
WDF_IO_QUEUE_CONFIG_INIT(
&queueConfig,
WdfIoQueueDispatchSequential
);
queueConfig.EvtIoWrite = MyEvtIoWrite;
status = WdfIoQueueCreate(
Device,
&queueConfig,
WDF_NO_OBJECT_ATTRIBUTES,
&WriteQueue
);
if(!NT_SUCCESS(status)) {
return status;
}
status = WdfDeviceConfigureRequestDispatching(
Device,
WriteQueue,
WdfRequestTypeWrite
);
if(!NT_SUCCESS(status)) {
return status;
}
要求
要求 | 价值 |
---|---|
目标平台 | 普遍 |
最低 KMDF 版本 | 1.0 |
最低 UMDF 版本 | 2.0 |
标头 | wdfdevice.h (包括 Wdf.h) |
库 | Wdf01000.sys(KMDF):WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | DriverCreate(kmdf),KmdfIrql(kmdf),KmdfIrql2(kmdf),KmdfIrqlExplicit(kmdf) |