WDF_IO_QUEUE_CONFIG解析

深入探讨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;

} WDF_IO_QUEUE_CONFIG, *PWDF_IO_QUEUE_CONFIG;

 

(1)Size :  该结构体的大小;(2)DispatchType  :该队列的Request分发类型:WdfIoQueueDispatchSequential:直到Driver调用WdfRequestComplete,框架才会从队列中取出下一个Request。WdfIoQueueDispatchParallel:只要该Request是可用的,即从队列中传递给DriverWdfIoQueueDispatchManual:Framework负责将Request输入队列,但不会分发给Driver,Driver通过WdfIoQueueRetrieveNextRequest来手动获取Request(3)PowerManaged:WdfTrue:Framework负责处理队列的电源管理;位于电源策略所有者上面的Driver,必须设置PowerManaged为WdfTrueWdfFalse:Driver负责处理队列的电源管理WdfDefault:除非Driver调用WdfFdoInitSetFilter,其余情况由Framework处理队列的电源管理(4)AllowZeroLengthRequests:为True,则表明Driver期待接收到零长度Buffer的读或写Request;否则,Framework不会将这些Request传递给Driver(5)DefaultQueue:表明该队列是设备的默认IO队列。(6)EvtIoDefault:EvtIoReadEvtIoWriteEvtIoDeviceControl:EvtIoInternalDeviceControlEvtIoStop:EvtIoResumeEvtIoCanceledOnQueue相应Event的Callback 函数(7)NumberOfPresentedRequests对于Parallel分发,该值表明framework可以处理的IO Request最大数目

 

该结构体是通过WDF_IO_QUEUE_CONFIG_INIT或WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE来初始化,并最终由WdfIoQueueCreate调用来创建特定设备上的IO Queue。

    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值