Pages

Sunday, October 11, 2009

Device Reset

Этот код славно перезапускает Windows Mobile 6.1 и Windows CE 6.0:
#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