usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Diagnostics;usingSystem.Runtime.InteropServices;namespacerestart
{classClass1
{
[DllImport("coredll.dll", CharSet = CharSet.Auto, SetLastError = true)]private static extern int KernelIoControl(int dwIoControlCode, IntPtr lpInBuf, int nInBufSize, IntPtr lpOutBuf, int nOutBufSize, intlpBytesReturned);
[DllImport("coredll.dll", CharSet = CharSet.Auto, SetLastError = true)]private static extern voidSetCleanRebootFlag();
[DllImport("coredll.dll", CharSet = CharSet.Auto, SetLastError = true)]private static extern void keybd_event(byte bVk, byte bScan, long dwFlags, longdwExtraInfo);//As Byte
private const int KEYEVENTF_KEYUP = 2;private const int FILE_DEVICE_HAL = 0x101;private const int FILE_DEVICE_CONSOLE = 0x102;private const int FILE_DEVICE_PSL = 0x103;private const int METHOD_BUFFERED = 0;private const int METHOD_IN_DIRECT = 1;private const int METHOD_OUT_DIRECT = 2;private const int METHOD_NEITHER = 3;private const int FILE_ANY_ACCESS = 0;private const int FILE_READ_ACCESS = 0x1;private const int FILE_WRITE_ACCESS = 0x2;private static int CTL_CODE(int DeviceType, int func, int Method, intAccess)
{return (DeviceType << 16) | (Access << 14) | (func << 2) |Method;
}//CTL_CODE
public static voidWarmBoot()
{int bytesReturned = 0;int IOCTL_HAL_REBOOT = CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS);
KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero,0, IntPtr.Zero, 0, bytesReturned);
}public static voidColdBoot()
{int bytesReturned = 0;int IOCTL_HAL_REBOOT = CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE_ANY_ACCESS);
SetCleanRebootFlag();//JJJ
KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero,0, IntPtr.Zero, 0, bytesReturned);
}//TestProc
public static voidHardReset()
{int IOCTL_HAL_REBOOT = 0x101003c;int bytesReturned = 0;
SetCleanRebootFlag();//KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, IntPtr.Zero, 0, bytesReturned) '一般//KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 4, IntPtr.Zero, 1024, bytesReturned) ' 热启动
KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 4, IntPtr.Zero, 1024, bytesReturned);//冷启动
}//HardReset
public static voidhardHibernate()
{int IOCTL_HAL_SHUTDOWN = 0x1012000;//休眠
int bytesReturned = 0;byte VK_OFF = 0xdf;
KernelIoControl(IOCTL_HAL_SHUTDOWN, IntPtr.Zero,0, IntPtr.Zero, 0, bytesReturned);//---按键的一个连续动作
keybd_event(VK_OFF, 0, 0, 0);
keybd_event(VK_OFF,0, KEYEVENTF_KEYUP, 0);//---按键的一个连续动作
}
}
}