各位好!
我正在做WINCE下的背光驱动
首先
我提供给PM.EXE 我的背光支持电源管理的能力为:D0、D1、D4
并且在D0时我让背光亮,D1和D4时我都让背光关闭 相关函数:
BOOL BackLightSetState(DWORD dwContext, CEDEVICE_POWER_STATE state)
目前当sleep时,设备(背光)驱动自动进入到D4状态,将背光关闭,当ON状态(唤醒)时,设备(背光)驱动自动进入到
D0状态,将背光打开。
然后我又把PM中的PDD层拿到我的BSP下编译,通过跟踪代码,发现当我在属性->背光超时,设置timeout时间后
当时间超时,PM.EXE的状态从UserActive切换到UserInactivity再到UserIdle
通过common.reg发现UserIdle对应的设备电源管理状态是D1,
可是:PM的系统电源管理状态已经进入到userIdle,而我的设备电源管理状态(背光驱动)并没进入到D1
通过代码发现,如果想让设备电源管理状态(背光驱动)进入到D1状态,必须通过IOCTL_POWER_SET
可是我看PM的PDD层并没有主动调用这个KernelIoControl(IOCTL_POWER_SET...)
请问各位兄台:这个地方我该怎么处理??
KernelIoControl函数是有内核来调用的,并不需要你自己调用。可以在KernelIoControl中通过串口打印些信息出来,看有没有被调用。
这个在背光驱动里实现就行了吧,没必要改PM的代码。
请问在:
控制面板->power中有useridle systemidle suspend的超时时间设置
同样在:
控制面板->diplay->backlight中也有个超时时间设置(我目前就是设置这个超时时间)
这两个超时时间有什么区别??
我在注册表中:
[HKEY_LOCAL_MACHINE\ControlPanel\Backlight]
"BatteryTimeout"=dword: 3c
"ACTimeout"=dword:78
"UseBattery"=dword:1
"UseExt"=dword:1
"Brightness"=dword:0f
"UserC"=dword:1
"AdvancedCPL"="AdvBacklight"
这里的几个timeout是指的哪个timeout值??
看看这里吧,希望有点帮助。
[url=http://www.cnblogs.com/we-hjb/archive/2010/01/27/1657973.html][/url]
thank you 各位:
找到原因了
我在设置D0 ,D1 ,D4状态支持的时候,把D1打成D0了