WinCE下面的关机,重新启动和冷启动

本文原来发表在CSDN博客上面,CSDN上内容现在已迁出至github page

本文地址:http://blog.csdn.net/autophyte/archive/2008/11/06/3240975.aspx

1. 关机

1
2
3
4
5
6
7
8
/*   
模拟power键按下实现关机,因为关机以后应用程序处理器将会断电,所以关机以后,无法通过此种方式重新开机。
*/
void SuspendWinCE()
{
::keybd_event(VK_OFF, 0, 0, 0);
::keybd_event(VK_OFF, 0, KEYEVENTF_KEYUP, 0);
}

2. 重启

1
2
3
4
5
6
7
/*
调用IOCTL_HAL_REBOOT来实现重新启动。
*/
BOOL WarmBoot()
{
return KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);
}

3. 冷启动

1
2
3
4
5
6
7
8
/*
通过设置clear标志位,然后重新启动的方式实现冷启动。
*/
void ClearBoot()
{
SetCleanRebootFlag();
KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, NULL);
}