默认的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); } 这部分由应用程序或者其它驱动来完成都可以。 |