关于系统自动关闭背光的问题
我的平台是PXA270+Wince5.0
目前有一个小问题,请教大家。
系统启动后,如果有一段时间没有使用,则背光会自动关闭,再过一段时间则进入useridle->systemidle->suspend状态。
在控制面板-->display-->backlight页面中可以设置自动关闭背光的时间,现在的问题是,背光关闭是是进入D3模式(最小背光),而不是D4模式(背光全关),同时进入D3模式后,我不论是点击屏幕还是使用按键,都不能是背光恢复成D0(普通使用的背光亮度)。
所以,请问一下,是在哪里设置的背光关闭时是进入D3还是D4?从串口信息来看,是有一个进程给背光驱动发送了一个IOCTL_POWER_SET request to D3,这个进程应该是控制面板中的调用的,但是我怎么也找不到是在哪里使用DeviceIOControl发送的IOCTL_POWER_SET。在背光驱动中是已经实现了IOControl,外部进程只需要发送DeviceIOControl就可以了。我在我的驱动中是没有搜索到。
第二个问题是,当系统进入useridle或者systemidle模式的时候,我使用touch或者按键都可以让系统相应一个PBT_TRANSITION消息,通知系统电源管理状态变更,因此我可以在相应消息的地方加入我自己的控制代码。但是背光关闭的时候,怎样能让系统响应touch或者keyboard从而知道我想把背光打开呢?这部分应该在哪里实现呢?
请大家帮忙讲一下基本的流程,我这两天看代码已经有点晕了,实在想不通了,唉。
谢谢!
[解决办法]
所以,请问一下,是在哪里设置的背光关闭时是进入D3还是D4?
注册表里面。
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\State\UserIdle]
"Default"=dword:3 ; D3
"wav1:"=dword:0 ; D0
"Flags"=dword:00100000 ; POWER_STATE_IDLE
default是对所有的驱动发送的消息,但是wav驱动是特殊,它不响应。
[解决办法]
控制面板-->display-->backlight这里设置的背光关闭时间跟系统的D0,D1这些状态根本没有关系,这需要另外一个线程来管理背光
IOCTL_POWER_SET这些IOCTL的调用代码可以参考Public下面的PM的代码
正常的话如果用系统的PM来控制,只要点击Panel或按键,都会发出useractivity事件,默认的系统在userinactive和useridle的状态都会回到On
但是D3已经对应的是Suspend状态,所以点Panel或按键是无法让系统回到ON的
我们一般会在D1对应Useridle的状态把背光关暗即最小背光,D2对应的Systemidle时就把背光完全关掉,而不是D3和D4
[解决办法]
只是不关背光吗?还是所有的设备都保持供电?直接设一下SYSTEMSTATUS不也可以吗?
[解决办法]
mark.
貌似一般做成手机或者PND形式的有这样的要求。其他的感觉要不就开着要不就关掉。
自动关闭可能是为低功耗设计吧。