chapter 7.1: PnP和电源管理

WDM驱动同时需要跟踪系统的状态和设备的状态。需要对所有状态处理请求,包括不需要驱动产生动作的请求。
 WDF实现了智能的默认的行为,导出一系列状态相关的回调来定制PnP和power行为。跟踪系统和设备状态,维护信息。管理I/O queue关于设备power state的行为,比如I/O request来时,framework可以启动设备。
 WDF提供的PnP和power管理选项:
    1.默认支持fast resume和suspend
    2.KMDF驱动支持自动挂起空闲驱动。置于低电源模式,USB设备可以使用选择性暂挂。
    3.KMDF驱动支持device wake signal,用来唤醒设备或系统。可以支持在除了OFFstate以外的任何状态中发起wake 信号。


关于PnP
最终使用者可以在不做硬件级别的配置下增加或移除设备。
1.PnP manager识别硬件,识别硬件更改,响应硬件设备事件(dock/undock,device insertion/removal)
2.bus driver发现并枚举硬件,请求资源。PnP manager收集从bus driver的资源,并给设备分派。
3.PnP先给legacy device分派资源,因为它们无法自动配置。
PnP支持:
    1.设备能从槽中弹出
    2.设备是一个docking station
    3.在系统运行时可以移除设备
    4.用户可以不通过应用程序移除设备
    5.设备可以被锁在槽中
    6.设备能在Device manager中隐藏。


关于Power states
是系统或设备的电源消耗级别
系统的电源状态:S0,运行状态;Sx(x从1到5),休眠状态。
设备的电源状态:D0,运行状态;Dx(x从1到3),消耗量越来越小。
***本书中: highest-powered state,最高电源状态表示的是消耗量最高的状态:(D0,S0)
S5:关闭,S4:休眠,S1S2S3都是睡眠,S0:最佳状态
D3:关闭,D0:最佳状态:所有设备都必须支持这两个状态。
例子:PCI设备,D3hot:设备在D3,parent bus在D0.  D3cold:设备在D3,parent bus在Dx。
设备电源状态转换必须经过D0,发起wake信号也必须在D0状态
----/UMDF capability\----
umdf驱动无法改变电源状态
----/KMDF capability\----
KMDF可以向设置PnP功能一样设置power功能。通常bus driver给连接的设备配置,但function和filter driver可以覆盖设置。
设置内容:
    1.设备支持的除了D0和D3的电源状态
    2.设备在哪个状态可以响应wake 信号
    3.对于每个Sx,设备的最高电源状态Dx
    4.设备可以给系统产生wake信号的系统最低电源状态Sx
    5.设备可以给系统产生wake信号的设备最高电源状态Dx
    6.估算恢复到D0的时间
    7.系统在进入睡眠状态,设备wake signal无法启动时设备的理想Dx
    *当系统进入Sx状态时,framework配置device状态到7.理想状态或3.最高电源状态Dx
在设备栈的驱动通过设置power capabilities,让上级驱动能覆盖设置。


关于Power policy
设备的power policy决定设备该处于哪个状态。
每个设备栈中会有一个driver拥有power policy
    UMDF driver必须显式指定他是owner
    KMDF假设FDO是owner,若是raw设备,则owner是Raw PDO。
    filter可以在初始化时向framework说明他是owner
owner只是可以定义设备电源状态在什么时候转换。
声明是owner的driver必须保证他们是栈中唯一的owner,通常这会在文档中说明。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值