window mobile power management关于device power state的管理
2010-08-22 13:11:00 来源:WEB开发网核心提示:从这个对话中,我们可以知道SetPowerRequirement()实际在设置我们的地板-floorDx,window mobile power management关于device power state的管理(3),至少是floorDx,不能更低了,这个结果就直接通过IOCTL_POWER_SET下达给设备驱动,m
从这个对话中,我们可以知道SetPowerRequirement()实际在设置我们的地板-floorDx。至少是floorDx,不能更低了。floorDx的默认值是D4,因此如果你不去call这个函数,那么就没什么限制。
至于ceilingDx
注册表HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlPower[ on | BacklightOff | Unattended | xxx ]的下面你可以定义:
"bkl1:"=D2
这样的定义,就好像你在规定:“系统在on的时候,bkl1:最高是D2”。所以bkl1:如果是D3,那么也是可以的。这实际就是在定义设备电源状态的天花板-ceilingDx。同时,如果你没有特别为某个设备指定,那么这个设备的ceilingDx就是用注册表项default的定义值。
综上,floorDx,ceilingDx,setDx,lastReqDx这四个值是power manager调度时要参考的重要参数。
设置设备的电源状态
curDx,actualDx是一对,意思非常接近。
curDx 是power manager经过调度算法,最后决定的,该设备的电源状态。可是这个状态,此设备不一定支持。设备声明自己所支持的所有状态是通过 IOCTL_POWER_CAPABILITIES做到的。因此万一不支持还需要经过mapping,那么mapping的结果就是actualDx,这个结果就直接通过IOCTL_POWER_SET下达给设备驱动。mapping的过程当然就要参考IOCTL_POWER_CAPABILITIES 了。
pendingDx和dwNumPending是用于处理竞争问题设计的计数器。
更多精彩
赞助商链接