WEB开发网
开发学院手机开发Windows Mobile 开发 window mobile power management关于device power... 阅读

window mobile power management关于device power state的管理

 2010-08-22 13:11:00 来源:WEB开发网   
核心提示:ceilingDx=D1floorDx=D3那么D0,D4就是power manager不用考虑的状态,D1,D2,D3就是有效的电源状态,window mobile power management关于device power state的管理(2),setDx是最厉害的一个状态,它默认是PwrDeviceUnspe

ceilingDx=D1

floorDx=D3

那么D0,D4就是power manager不用考虑的状态,D1,D2,D3就是有效的电源状态。

setDx是最厉害的一个状态,它默认是PwrDeviceUnspecified,只要它不是PwrDeviceUnspecified,那么这个设备的最终状态就等于setDx。

那么setDx是谁设置的呢?

从名字我们一猜就知道,那就是SetDevicePower()。也就是说,只要这个函数一出马,那么不管系统当前是什么状态,或者这个设备是什么状态,这个对应的设备会立即切换到你指定的状态。因此,call这个函数的时候一定要三思而后行。白屏现象就很有可能是他造成的。

例如:

SetDevicePower(_T("BKL1:"),POWER_NAME,D4);

这句话就好像在说:“power manager,我命令你把BKL1:变成D4!!”

如果setDx是PwrDeviceUnspecified,那么power manager就开始考虑lastReqDx。lastReqDx的气势就要虚弱很多,也正如microsoft的文档所说,如果你想改变一个设备的系统状态,同时还想争得power manager的同意,不想太强制,那么call DevicePowerNotify()是再合适不过的了。

例如:

DevicePowerNotify(_T("BKL1:"),D4,POWER_NAME);

这句话就好像在说:“power manager,你看我现在把BKL1:变成D4如何?!”

power manager接到这样的请求,它也是需要掂量一下的,那么它的原则是什么呢?只要是有效状态就可以啦!也就是说ceilingDx〈 lastReqDx〈floorDx。

如果ceilingDx=D1,lastReqDx=D0,那么设备最终也只能是D1。

再如floorDx=D3,astReqDx=D4,那么设备最终也只能是D3。

如果 ceilingDx=D1,floorDx=D3,你请求D2,那么设备最终就是D2。

以上原则很简单吧!可是你有没有注意到我没有提到ceilingDx与floorDx是如何确定的。说到这个就不得不说说SetPowerRequirement()和

ReleasePowerRequirement()两个函数。

例如:

SetPowerRequirement(_T("BKL1:"),D1,POWER_NAME,NULL,0);

好像再说在说:“power manager,帮我把BKL1:变成D1”。你觉得呢?当然不是!

其实你的真正意思是在说:“power manager,至少帮我把BKL1:变成D1”。

然后power manager问你,“D0可以么?(背光更亮一点可以么?)”。

然后你会说,“当然也可以。”

Tags:window mobile power

编辑录入:coldstar [复制链接] [打 印]
赞助商链接