#include <Windows.h>
const DWORD FILE_DEVICE_HAL = 0x00000101;
const DWORD METHOD_BUFFERED = 0;
const DWORD FILE_ANY_ACCESS = 0;
#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);
DWORD CTL_CODE(DWORD nDeviceType, DWORD nFunction, DWORD nMethod, DWORD nAccess)
{
return ((nDeviceType << 16) | (nAccess << 14) | (nFunction << 2) | nMethod);
}
BOOL ResetDevice()
{
DWORD nBytes = 0;
KernelIoControl(IOCTL_HAL_REBOOT, NULL, 0, NULL, 0, &nBytes);
return TRUE;
}
Тоже самое, но более понятным кодом:
#include <pm.h>
BOOL ResetDevice1()
{
SetSystemPowerState(NULL,POWER_STATE_RESET,0);
return TRUE;
}
No comments:
Post a Comment