WDF_IO_QUEUE_CONFIG解析

该结构体为框架队列对象的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是可用的,即从队列中传递给Driver WdfIoQueueDispatchManual:Framework负责将Request输入队列,但不会分发给Driver,Driver通过 WdfIoQueueRetrieveNextRequest来手动获取Request (3) PowerManaged: WdfTrue:Framework负责处理队列的电源管理;位于电源策略所有者上面的Driver,必须设置PowerManaged为WdfTrue WdfFalse: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。

       

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值