KernelIoControl
函数是未公开的函数,
所以要声明一下,下面的例子里用
到了很多未公开的方法,所以使用前都要声明一下:
#define CTL_CODE( DeviceType, Function, Method, Access )
( ((DeviceType) <
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);