嵌入式作業系統windows ce和微軟的桌面作業系統,譬如windows xp,windows7等相比較,在系統重啟與關機方面是明顯不同的。在一般的桌面作業系統中,通過開始選單即可完成系統的睡眠、重啟和關機等操作,但是在windows ce中,只有乙個suspend(掛起)選項,如果想要實現重啟關機操作的話,就需要自己寫乙個應用程式了。
不過在網上查到的最多的乙個方法用我的裝置測試是行不通的,至於原因我還沒有搞明白,**如下:
#include
#include"winioctl.h"
bool kerneliocontrol(dword dwiocontrolcode, lpvoid lpinbuf, dword ninbufsize, lpvoid lpoutbuf, dword noutbufsize, lpdword lpbytesreturned);
#define ioctl_hal_get_device_info ctl_code(file_device_hal, 1, method_buffered, file_any_access)
#define ioctl_hal_reboot ctl_code(file_device_hal, 15, method_buffered, file_any_access)
#define ioctl_hal_coldboot ctl_code(file_device_hal, 30, method_buffered, file_any_access)
void winapi reboot (int nbootmode)上述**的思想是通過kerneiocontrol函式來實現windows ce的重啟,只是在我的裝置上沒有起到應有的效果,或者還需要增加某些**,亦或者需要在定製windows ce的時候增加某些選項,這就不得而知了。如果以後可以通過上述**的思想實現重啟,我再說明下方法。
但是問題是需要解決的,所以我從網上查在桌面作業系統下應該如何通過程式設計來實現重啟,然後查到了exitwindow***函式,然而很可惜的是,也是行不通的,當呼叫這個函式的時候,vs提示找不到該函式。
經過上述兩次的嘗試,我又換了乙個思路:記得當時在定製wince的時候,有個電源管理選項,不知道系統的重啟關機是否和電源選項有關,因此便從網上查電源管理,找了乙個函式setsystempowerstate,於是嘗試了一下,結果是可喜的,成功了。
該函式的原型為:
dword setsystempowerstate(根據msdn,該函式只在windows ce中才可以使用。lpcwstr psstate,
dword stateflags,
dword options
);
#define power_state(f) ((f) & 0xffff0000) // power state mask
#define power_state_on (dword)(0x00010000) // on state
#define power_state_off (dword)(0x00020000) // no power, full off
#define power_state_critical (dword)(0x00040000) // critical off
#define power_state_boot (dword)(0x00080000) // boot state
#define power_state_idle (dword)(0x00100000) // idle state
#define power_state_suspend (dword)(0x00200000) // suspend state
#define power_state_unattended (dword)(0x00400000) // unattended state.
#define power_state_reset (dword)(0x00800000) // reset state
#define power_state_useridle (dword)(0x01000000) // user idle state
#define power_state_backlighton (dword)(0x02000000) // device scree backlight on
#define power_state_password (dword)(0x10000000) // this state is password protected.
通過如下語句即可實現系統重啟:
setsystempowerstate(null,power_state_reset,power_force);
wince中重啟網絡卡
下面先貼出我的 wchar name t cs89001 0 handle m hfilehandle createfile t nds0 0,0,null,open existing,file attribute normal,handle invalid handle value if m hf...
關於wince下串列埠問題
我使用pb定製作業系統時只能新增三個串列埠,在定製的wince上執行串列埠測試程式發現,我開啟 1 後操作的是物理串列埠2,收發資料正常。開啟 2 操作的為物理串列埠3,傳送一次資料後程式無響應。可以開啟 3 但不能收發資料。我到網上的相關 搜尋了一下,得知物理串列埠1是用來除錯用的,正常情況下,我...
關於MySQL不斷重啟的問題
前幾日,公司來一新人,不小心把電源踢斷了。當時我的機器上還跑著伺服器程式。以上是背景,然後等我開機重啟服務的時候,發現連線資料庫總是失敗。最常見的就是 cannot connect to mysql by var lib mysql mysql.sock 提示大概就是這樣吧,記不清了。當時使用mys...