解决6410 WINCE6 应用层调用SetSystemPowerState api关机无效的问题
6410平臺下的wince6系統,在應用層中使用SetSystemPowerState api函數關機發現無效。
應用層調用如下:
[cpp]view plaincopy注:該調用需要引用pm.h頭文件,該頭文件在wince600目錄下可找到,同時需要使用#pragma comment(lib, "coredll.lib")來引用靜態庫
跟蹤pm電源管理驅動發現,傳進來的POWER_STATE_OFF的參數在某個地方被屏蔽掉了,沒有接著往下走。由于跳轉調用的太多了,無法準確定位到哪里屏蔽掉了。而且就算是定位到了要修改PM驅動也會很麻煩。所以就找到了PlatformSendSystemPowerState()這個位置。只要在這下面,針對POWER_STATE_OFF的情況進行處理即可。我的處理方法是,直接在這個地方調用到PowerButton的驅動,去進行關機處理。因為在這個PM驅動下無法控制到GPIO,所以就打算直接調用驅動接口來控制。
具體修改如下:
1、修改C:\WINCE600\public\common\oak\drivers\pm\pdd\default\platform.cpp文件中的DWORD WINAPI PlatformSendSystemPowerState(LPCWSTR pwsState, DWORD dwStateHint, DWORD dwOptions)函數。
在return之前加上這么一段:
[cpp]view plaincopy2、在PowerButton驅動中添加相應的關機控制處理:
修改C:\WINCE600\PLATFORM\SMDK6410\src\drivers\PowerButton\PowerButton.c文件中的PWR_IOControl()函數。
在return之前添加以下處理:
[cpp]view plaincopy上述都修改完后,把這兩個驅動rebuild以下,然后再對整個工程進行build and sysgen。
已經測試通過,用戶可以在應用層通過SetSystemPowerState 來進行關機
在此記錄一下
總結
以上是生活随笔為你收集整理的解决6410 WINCE6 应用层调用SetSystemPowerState api关机无效的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 处理硬件设备访问权限问题
- 下一篇: 《雷神4:爱与雷霆》首次发布正片片段 吹