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

返回代码 说明
STATUS_INVALID_PARAMETER
输入参数无效。
STATUS_INSUFFICIENT_RESOURCES
可用内存量太低。
STATUS_WDF_BUSY
驱动程序已将队列分配给指定的请求类型。
 

该方法可能会返回其他 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)

另请参阅

WDF_IO_QUEUE_CONFIG_INIT

WdfIoQueueCreate