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) |
Library | Wdf01000.sys (KMDF) ;WUDFx02000.dll (UMDF) |
IRQL | <= DISPATCH_LEVEL |
DDI 符合性规则 | DriverCreate (kmdf) 、 KmdfIrql (kmdf) 、 KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf) |