资源描述:
《WinCE下重启系统的方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、WinCE下重启系统的方法 KernelIoControl函数是未公开的函数,所以要声明一下,下面的例子里用到了很多未公开的方法,所以使用前都要声明一下:#defineCTL_CODE(DeviceType,Function,Method,Access)(((DeviceType)<<16)
2、((Access)<<14)
3、((Function)<<2)
4、(Method))#defineFILE_DEVICE_HAL0x00000101#defineMETHOD_BUFFERED0 #defineFILE_ANY_ACC
5、ESS0#define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS) extern "C" __declspec(dllimport) BOOL KernelIoControl( DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, DWOR
6、D nOutBufSize, LPDWORD lpBytesReturned); 调用: KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL); //补充下关闭(suspend)方法1://虚拟关机键::keybd_event(VK_OFF,0,0,0);::keybd_event(VK_OFF,0,KEYEVENTF_KEYUP,0);方法2:调用这方函数就直接关机了,哈哈,调用前小心啊!//调用未公开函数PowerOffSyst
7、em()extern"C"__declspec(dllimport)voidPowerOffSystem();重起(softreset)这个就是文章开头说的那个方法//Softresetthedevice#include#defineIOCTL_HAL_REBOOTCTL_CODE(FILE_DEVICE_HAL,15,METHOD_BUFFERED,FILE_ANY_ACCESS)extern"C"__declspec(dllimport)BOOLKernelIoControl( DWORDdwIoControlCo
8、de, LPVOIDlpInBuf, DWORDnInBufSize, LPVOIDlpOutBuf, DWORDnOutBufSize, LPDWORDlpBytesReturned);BOOLResetPocketPC(){ returnKernelIoControl(IOCTL_HAL_REBOOT,NULL,0,NULL,0,NULL);}硬起动(hardreset)//注意!!!使用此段代码会将您的PocketPC的用户数据全部清空,//请勿非法使用,用者后果自负.#include#defineIOCTL_H
9、AL_REBOOTCTL_CODE(FILE_DEVICE_HAL,15,METHOD_BUFFERED,FILE_ANY_ACCESS)extern"C"__declspec(dllimport)voidSetCleanRebootFlag(void);extern"C"__declspec(dllimport)BOOLKernelIoControl( DWORDdwIoControlCode, LPVOIDlpInBuf, DWORDnInBufSize, LPVOIDlpOutBuf, DWORDnOutBufS
10、ize, LPDWORDlpBytesReturned);BOOLHardResetPocketPC(){ SetCleanRebootFlag(); returnKernelIoControl(IOCTL_HAL_REBOOT,NULL,0,NULL,0,NULL);}-------------------------------------------------------------关闭(suspend)方法1://虚拟关机键::keybd_event(VK_OFF,0,0,0);::keybd_event(V
11、K_OFF,0,KEYEVENTF_KEYUP,0);方法2://调用未公开函数PowerOffSystem()extern"C"__declspec(dllimport)voidPowerOffSystem();重起(softreset)//Softresetthedevice#include 〈winioctl.h〉#defi