解决WinCE自动挂起的问题

默认的WINCE设置是会自动挂起的,在电源管理界面里设置从不自动挂起后能够禁止它自动挂起,同时修改了以下一些注册表:
[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

但当使用了hive 注册表时即使在定制OS的时候就将以上的值设置好仍然会自动挂起,而在WINCE的电源管理界面查看这些值是正确的,实际上是以上注册表信息是存储到system.hv中,一般情况下加载pm.dll的时候还无法从其它存储器中读取system.hv,pm.dll在无法读取这些注册表值的时候就会使用一些默认值,而这些默认值是会进行自动suspend的,所以需要在system.hv能够读取后使用如下代码让系统重新读取超时设置。
HANDLE hevReloadActivityTimeouts =   
  OpenEvent(EVENT_ALL_ACCESS, FALSE, _T("PowerManager/ReloadActivityTimeouts"));
  if (hevReloadActivityTimeouts) {
  SetEvent(hevReloadActivityTimeouts);
  CloseHandle(hevReloadActivityTimeouts);
  }  

这部分由应用程序或者其它驱动来完成都可以。

posted on 2013-03-07 12:03  王亮1  阅读(207)  评论(0编辑  收藏  举报

导航