WinCE下重启系统的方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WinCE下重启系统的方法

KernelIoControl函数是未公开的函数,所以要声明一下,下面的例子里用到了很多未公开的方法,所以使用前都要声明一下:

#define CTL_CODE( DeviceType, Function, Method, Access ) ( ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) )

#define FILE_DEVICE_HAL 0x00000101

#define METHOD_BUFFERED 0

#define FILE_ANY_ACCESS 0

#define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 1 5, METHOD_BUFFERED, FILE_ANY_ACCESS)

extern "C" __declspec(dllimport) BOOL KernelIoCo ntrol(

DWORD dwIoControlCode,

LPVOID lpInBuf,

DWORD nInBufSize,

LPVOID lpOutBuf,

DWORD 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:调用这方函数就直接关机了,哈哈,调用前小心啊!

//调用未公开函数PowerOffSystem()

extern "C" __declspec(dllimport) void PowerOffSystem();

重起(soft reset) 这个就是文章开头说的那个方法

//Soft reset the device

#include

#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,

DWORD nOutBufSize,

LPDWORD lpBytesReturned);

BOOL ResetPocketPC()

{

return KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);

}

硬起动(hard reset)

//注意!!!使用此段代码会将您的Pocket PC的用户数据全部清空,

//请勿非法使用,用者后果自负.

#include

#define IOCTL_HAL_REBOOT CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)

extern "C" __declspec(dllimport)void SetCleanRebootFlag(void);

extern "C" __declspec(dllimport) BOOL KernelIoControl(

DWORD dwIoControlCode,

LPVOID lpInBuf,

DWORD nInBufSize,

LPVOID lpOutBuf,

DWORD nOutBufSize,

LPDWORD lpBytesReturned);

BOOL HardResetPocketPC()

{

SetCleanRebootFlag();

return 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:

//调用未公开函数PowerOffSystem()

extern "C" __declspec(dllimport) void PowerOffSystem();

重起(soft reset)

//Soft reset the device

#include 〈winioctl.h〉

#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,

DWORD nOutBufSize,

LPDWORD lpBytesReturned);

BOOL ResetDevice()

{

return KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);

}

相关文档
最新文档