pilot
2008-10-10 09:26
楼主
在WINCE5.0 系统中,控制面板--电源--电源属性--方案,
当我在电源使用方案中选电池电源时,将状态切换为挂起的时间不准(即是系统定时睡眠的时间不准),
请高手指点应该怎么样修改,谢谢!
说明你背后有驱动要求PM不要进suspend,可以create 一个线程去监听系统的电源消息
楼上的说法我不同意,机器是能挂起的,只是时间不准而已。
驱动要求PM不要进suspend,等它做完事情之后再发消息通知PM,可以进入suspend了。
这些都是猜测,你创建一个线程监听系统电源消息和状态变化就什么都知道了。
不明白您所说的不准是什么意思,是到了一定电量系统没有挂起,系统监测的电量不准导致时间不对.还是说你设定一个系统时间,但是到时间没有挂起?如果是最后一种,那基本上是没办法了,我以前遇到过CE当中精确定时真是困难.建议你试下CAPPRUNATTIME吧.另一个进程挂起系统.
时间不准,差的有多少?
PM中有没有设
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
"Timeout"=dword:1 ; in seconds
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
"Timeout"=dword:1 ; in seconds
这两个Timeout的值,这个值会影响到进Suspend的时间
系统进Suspend的时间应该是UserActivity Timeout值+系统进UserIdle Timeout值+系统进SystemIdle Timeout值+系统进Suspend Timeout值
理论上来说应该是差得很少的
UserActivity Timeout是指什么?
没有听说过这段时间,能具体描述一下?
可以参考一下PM的代码,系统正常开机后进入Activity状态,等到UserActivity Timeout到后切换到Inactivity状态,然后才开始计UserIdle的Timeout,等时间到后才会切到UserIdle状态
根据UserIdle ,SystemIdle ,Suspend设置的不同,时间差得不同
引用: 引用 7 楼 hzdysymbol 的回复:
时间不准,差的有多少?
PM中有没有设
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
"Timeout"=dword:1 ; in seconds
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
"Timeout"=dword:1 ; in seconds
这两个Timeout的值,这个值会影响到进Suspend的时间
系统进Suspend的时间应该是UserActivity …
好厉害
引用: 引用 7 楼 hzdysymbol 的回复:
时间不准,差的有多少?
PM中有没有设
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
"Timeout"=dword:1 ; in seconds
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
"Timeout"=dword:1 ; in seconds
这两个Timeout的值,这个值会影响到进Suspend的时间
系统进Suspend的时间应该是UserActivity Timeout值…
这两个值,都是设置对的。这都是PUBLIC下的代码,编出来就是不准的,你们也可以测一下自己的机器,应该都是不准的
我的电池休眠也不准确
交流电源休眠时间非常准确
我在注册表中没有看到
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
"Timeout"=dword:1 ; in seconds
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
"Timeout"=dword:1 ; in seconds
这两个设置
请问楼主是否解决这个问题了??
我的电池休眠和交流电源休眠时间都准确了
在注册表中并没有
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
"Timeout"=dword:1 ; in seconds
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
"Timeout"=dword:1 ; in seconds
我正在试改PUBLIC下的代码,
因为这都是微软的,编出来就是不准的,注册表都是这样设置的,默认的,没动过。
在PUBLIC中
的power.cpp有设置休眠时间的函数
但是这个都是固定的不需要修改啊
在你的驱动中只需要读取注册表中你设置的休眠时间再乘1000
然后waitforsingleobject(xxx,挂起时间)
就可以了
wangxin_801115:
我的注册表里是有这两项的:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
"Timeout"=dword:1 ; in seconds
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
"Timeout"=dword:1 ; in seconds
休眠时间的处理我们的电池驱动没有做处理,而是使用的PUBLIC下PM\PDD\DEFAULT里面提供的默认处理
你现在是怎么处理的,请详细说明一下
在Common.reg中找到
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\UserActivity]
"Timeout"=dword:A ; in seconds
; @CESYSGEN IF PM_PM_DEFAULT_PDD
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\ActivityTimers\SystemActivity]
"Timeout"=dword:A ; in seconds
通过远程查看注册表也可以看到:Timeout 为10
奇怪的问题:
本来刚开始电池休眠是好使的,而且很准
但是后来就不能休眠了,但是查看注册表可以看到
BattSystemIdle 60
BattUserIdle 60
说明向注册表写入已经成功了
但是,就是休眠不了??
奇怪!!!