13559|14

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince如何取消自动挂起 [复制链接]

最近在做wince
好多东西不懂,烦的要死

好不容易实现了battery driver,结果又出来新问题
自从实现battery驱动后,一段时间没有操作,wince就自动挂起
现在希望将自动挂起去掉
去网上查,说是wince省电保护,通过设置[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\Timeouts]来设置改功能
在platform.reg中设置如下:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\Timeouts]
    "ACUserIdle"=dword:0      ; in seconds
    "ACSystemIdle"=dword:0    ; in seconds
    "ACSuspend"=dword:0       ; in seconds
    "BattUserIdle"=dword:0      ; in seconds
    "BattSystemIdle"=dword:0   ; in seconds
    "BattSuspend"=dword:0      ; in seconds
    "BattPowerOff"=dword:0
    "ExtPowerOff"=dword:0
    "WakeupPowerOff"=dword:0
    "ScreenPowerOff"=dword:0

修改完烧录,查看regedit确定已经修改完成。
测试一下,仍然在闲置约5M后自动挂起
将所有值修改为ffffffff,仍然在闲置约5M后自动挂起
修改注册表完全没有任何作用

根据DEBUG消息定位在挂起过程中调用了power_button 驱动中的PWR_POWEROFF(),但不知道是在哪里调用的
请各位大虾指教

最新回复

我也同样遇到这个问题,这段代码加到哪个驱动中可以实现呢?请指教,谢谢!  详情 回复 发表于 2015-10-22 09:23
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
改注册表power那块
 
 

回复

48

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
引用 1 楼 myearth 的回复:
改注册表power那块

上面已经说过了
注册表改过了
没用
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
在控制面板有个电源方案
在里面可以设置battdrvr的idle时间
请问修改注册表哪里可以设置这个的值
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 
这些idle应该就是你写的那些注册表内容,看一下release目录下的reginit.ini文件里边的设置对不对
 
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 veabol 的回复:

这些idle应该就是你写的那些注册表内容,看一下release目录下的reginit.ini文件里边的设置对不对

reginit.ini里的值和FILE里的platform.reg的值是一致的,应该没问题。

我在电源管理里手动修改蓄电池方案Idle time为Never,
还是会自动挂起
加入SystemIdleTimerReset();也一样
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
我在调试中遇到一个现象,虽然注册表中也同你一样设置的那些Timeouts参数,但是系统组件加得不同就会出现不同的效果。
其中一个组件较少的不会出现自动IDLE的状态,而较多组件的那个就会自动IDLE,具体原因还没分析到。
组件的差异如下,虽然说所列的大部分组件或者是全部组件对这个自动IDLE都不会产生影响,但是既然我恰巧也有这种情况就提供些信息一起分析下吧。




























 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 3 楼 shen8686 的回复:
在控制面板有个电源方案
在里面可以设置battdrvr的idle时间
请问修改注册表哪里可以设置这个的值


这个应该就是注册表的那些设置
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

9
 
这个问题吗,是PM.dll 电源管理程序的bug, pm.dll 在注册表可用之前就加载了。
pm.dll初始化的时候会去读取注册表的超时设置值,可这个时候注册表还不可用,所以读取注册表失败,pm.dll就用默认值去设置超时设置(1分钟进入用户空闲状态(关闭背光))。
为了pm.dll正确使用注册表的设置值,可以等注册表可用后再让pm.dll读取一次注册表的超时设置值。
这样就工作正常。

可用下面代码来强制pm.dll读取注册表值,可以放到自己的程序中,或者修改explorer.exe来调用都可以

// 指示PM.dll 重新读取电源管理超时时间
  HANDLE hevReloadActivityTimeouts =  
  OpenEvent(EVENT_ALL_ACCESS, FALSE, _T("PowerManager/ReloadActivityTimeouts"));
  if (hevReloadActivityTimeouts) {
  SetEvent(hevReloadActivityTimeouts);
  CloseHandle(hevReloadActivityTimeouts);
  }

或者参考帖子
http://topic.eeworld.net/u/20100609/15/845468df-d0a6-4938-bef3-75f086c9319d.html
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 8 楼 wolong98 的回复:
这个问题吗,是PM.dll 电源管理程序的bug, pm.dll 在注册表可用之前就加载了。
pm.dll初始化的时候会去读取注册表的超时设置值,可这个时候注册表还不可用,所以读取注册表失败,pm.dll就用默认值去设置超时设置(1分钟进入用户空闲状态(关闭背光))。
为了pm.dll正确使用注册表的设置值,可以等注册表可用后再让pm.dll读取一次注册表的超时设置值。
这样就工作正常。
……


应该不是这个问题,不是在进入WINCE后修改的注册表,而是在make image之前就已经修改了注册表,所以OS中的默认注册表就已经设置好了。而且这部分应该是属于boot.hv,不会读取不到注册表。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

11
 
楼上你测试下就知道了
我专门跟踪了, pm.dll 加载的时候读取注册表失败了。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 10 楼 wolong98 的回复:
楼上你测试下就知道了
我专门跟踪了, pm.dll 加载的时候读取注册表失败了。

好,我研究下
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

13
 
电源超时设置的注册表保存在 system.hv 中, 而不是 boot.hv
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 8 楼 wolong98 的回复:

这个问题吗,是PM.dll 电源管理程序的bug, pm.dll 在注册表可用之前就加载了。
pm.dll初始化的时候会去读取注册表的超时设置值,可这个时候注册表还不可用,所以读取注册表失败,pm.dll就用默认值去设置超时设置(1分钟进入用户空闲状态(关闭背光))。
为了pm.dll正确使用注册表的设置值,可以等注册表可用后再让pm.dll读取一次注册表的超时设置值。
这样就工作正常。
……

果然是这个问题
高手
多谢了
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

15
 
我也同样遇到这个问题,这段代码加到哪个驱动中可以实现呢?请指教,谢谢!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表