wdfio.h) (WDF_IO_QUEUE_CONFIG 结构

[适用于 KMDF 和 UMDF]

WDF_IO_QUEUE_CONFIG 结构包含框架队列对象的配置信息。

语法

typedef struct _WDF_IO_QUEUE_CONFIG {
  ULONG                                       Size;
  WDF_IO_QUEUE_DISPATCH_TYPE                  DispatchType;
  WDF_TRI_STATE                               PowerManaged;
  BOOLEAN                                     AllowZeroLengthRequests;
  BOOLEAN                                     DefaultQueue;
  PFN_WDF_IO_QUEUE_IO_DEFAULT                 EvtIoDefault;
  PFN_WDF_IO_QUEUE_IO_READ                    EvtIoRead;
  PFN_WDF_IO_QUEUE_IO_WRITE                   EvtIoWrite;
  PFN_WDF_IO_QUEUE_IO_DEVICE_CONTROL          EvtIoDeviceControl;
  PFN_WDF_IO_QUEUE_IO_INTERNAL_DEVICE_CONTROL EvtIoInternalDeviceControl;
  PFN_WDF_IO_QUEUE_IO_STOP                    EvtIoStop;
  PFN_WDF_IO_QUEUE_IO_RESUME                  EvtIoResume;
  PFN_WDF_IO_QUEUE_IO_CANCELED_ON_QUEUE       EvtIoCanceledOnQueue;
  union {
    struct {
      ULONG NumberOfPresentedRequests;
    } Parallel;
  } Settings;
  WDFDRIVER                                   Driver;
} WDF_IO_QUEUE_CONFIG, *PWDF_IO_QUEUE_CONFIG;

成员

Size

此结构的长度(以字节为单位)。

DispatchType

标识队列的请求调度类型的 WDF_IO_QUEUE_DISPATCH_TYPE 枚举器。

PowerManaged

一个WDF_TRI_STATE类型的值,如果设置为 WdfTrue,则指示框架处理队列的电源管理。

如果设置为 WdfFalse,驱动程序必须处理队列的电源管理。

如果设置为 WdfUseDefault,框架将处理队列的电源管理,除非驱动程序调用 WdfFdoInitSetFilter

驱动程序堆栈中 电源策略所有者 上方的驱动程序不得将 PowerManaged 成员设置为 WdfTrue

有关电源管理的 I/O 队列的详细信息,请参阅 I/O 队列的电源管理

AllowZeroLengthRequests

一个布尔值,如果 为 TRUE,则指示驱动程序希望接收缓冲区长度为零的读取或写入请求,因此框架会将这些请求传递给驱动程序。 如果 为 FALSE,则框架不会将这些请求传递给驱动程序;相反,它会以STATUS_SUCCESS的完成状态完成它们。

DefaultQueue

一个布尔值,如果 为 TRUE,则指示队列将是设备 的默认 I/O 队列。 如果 为 FALSE,则队列不会是设备的默认队列。

EvtIoDefault

指向驱动程序队列特定的 EvtIoDefault 回调函数的指针,或 NULL

EvtIoRead

指向驱动程序队列特定的 EvtIoRead 回调函数的指针,或 NULL

EvtIoWrite

指向驱动程序队列特定的 EvtIoWrite 回调函数的指针,或 NULL

EvtIoDeviceControl

指向驱动程序队列特定的 EvtIoDeviceControl 回调函数的指针,或 NULL

EvtIoInternalDeviceControl

指向驱动程序队列特定的 EvtIoInternalDeviceControl 回调函数的指针,或 NULL

EvtIoStop

指向驱动程序队列特定的 EvtIoStop 回调函数的指针,或 NULL

EvtIoResume

指向驱动程序特定于队列的 EvtIoResume 回调函数的指针,或 NULL

EvtIoCanceledOnQueue

指向驱动程序队列特定的 EvtIoCanceledOnQueue 回调函数的指针,或 NULL

Settings

Settings.Parallel

Settings.Parallel.NumberOfPresentedRequests

对于并行 调度方法,框架异步传递到 I/O 队列的请求处理程序的最大 I/O 请求数。 有关更多信息,请参见下面的“备注”部分。 对于顺序和手动调度方法,此成员必须为零。 此成员在 1.9 版及更高版本的 KMDF 中可用。

Driver

仅限内部使用。 设置为 NULL。 此成员在 1.11 版及更高版本的 KMDF 中可用。

注解

驱动程序必须通过调用 WDF_IO_QUEUE_CONFIG_INITWDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE 来初始化 WDF_IO_QUEUE_CONFIG 结构。

WDF_IO_QUEUE_CONFIG 结构用作 WdfIoQueueCreate 的输入参数。

从 KMDF 版本 1.9 开始,驱动程序可以使用 NumberOfPresentedRequests 成员指定框架异步传递到并行 I/O 队列的请求处理程序的最大 I/O 请求数。 框架将指定数量的 I/O 请求传递给驱动程序后,在驱动程序 完成取消重新排队 至少一个请求之前,它不会从队列中传递更多请求。

对于并行队列, WDF_IO_QUEUE_CONFIG_INITWDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUENumberOfPresentedRequests 成员设置为其默认值 (-1) ,这指示框架可以向驱动程序传递无限数量的 I/O 请求。

要求

要求
最低 KMDF 版本 1.0
最低 UMDF 版本 2.0
标头 wdfio.h (包括 Wdf.h)

另请参阅

WDF_IO_QUEUE_CONFIG_INIT

WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE

WDF_IO_QUEUE_DISPATCH_TYPE

WdfIoQueueCreate

WdfIoQueueReadyNotify