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_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) |