主要考虑在功能分配上,头有点糊涂了,希望大家讨论一下
------解决方案--------------------
电源管理驱动用来控制进入不同的状态:D0,D1,D2,D3,还是D4
电源按键驱动其实就是键盘驱动,不搭界
电池驱动就是电池驱动,也不搭界
------解决方案--------------------
电池也要驱动,应该是由电源管理来做的。
电源按键属于按键驱动,只是用来控制电源的,做开关用。
------解决方案--------------------
------解决方案--------------------
电源管理驱动/电源按键驱动/电池驱动
电源管理驱动指的是PM.dll,是系统用来管理所有系统状态及驱动电源状态的驱动,系统状态一般分为On, UserIdle, SystemIdle, Suspend, Reboot, Off等(以CE为例,Mobile的状态有些不一样),驱动对应的状态有D0,D1...D4五种状态,PM管理着系统这些状态之间的切换,及各系统状态对应的驱动状态,以及负责调用各驱动的POWER IOCTL等,只要选上指定的Feature,它就会被生成在Release目录下,如果需要定制的话可以把它相关的代码拿出来放到BSP中进行修改,代码在Public..Common..Drivers下面
电源按键驱动:它只不过是一个很普通的流式驱动,实现的功能无非是检测到Power键被按下时去调用SetSystemPowerState(这函数会调用到电源管理驱动里面),让系统进Suspend.当然这里还可以做很多驱动开发人员需要做的事情.而且这个驱动完全可以把它集成到普通按键的驱动里面,只是对这一个特殊的键做一些比较特殊的处理,不是发Event给系统,而是调用SetSystemPowerState,或是别的PowerPolicyNotity函数等.
电池驱动:顾名思义就是针对电池的一个驱动,其基本功能是电池电量的检测.只不过在使用电池的时候,尤其是电池电量低的时候一般系统要求能自动进入Suspend,所以通常在电池驱动里会添加一些这样相关的代码,所以它也跟电源管理扯上关系了,还有一点就是电池驱动要负责告诉系统是否使用AC,这点PM中也会用到,因为电池和AC供电对PM来说是有区别的
总结:这三个驱动看起来似乎有一些关系,但我个人觉得其实没有什么太大的关系,
更确切的说,PM跟每个驱动都有一些关系.
当然这里的核心应该是电源管理驱动
以上是个人观点,仅供参考
------解决方案--------------------
楼上说的太好了