[适用于 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_INIT 或 WDF_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_INIT 和 WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE 将 NumberOfPresentedRequests 成员设置为其默认值(-1),这表示框架可以向驱动程序传递无限数量的 I/O 请求。
要求
| 要求 | 价值 |
|---|---|
| 最低 KMDF 版本 | 1.0 |
| 最低 UMDF 版本 | 2.0 |
| 标头 | wdfio.h (包括 Wdf.h) |