Перезагрузка КПК
Перезагрузка КПК
Для карманных компьютеров может применяться как жесткая, так и мягкая перезагрузка. Жесткая перезагрузка возвращает устройство в первоначальное состояние, удаляя все установленные программы. Делать жесткую перезагрузку без особой необходимости не следует. Мягкая перезагрузка является более безопасной операцией, которую часто выполняют при появлении различных сбоев в работе программ.
Если разработчику необходимо программно перезагрузить устройство, то необходимо воспользоваться функцией KernelIoControl. В листинге 13.3 приведен небольшой пример, демонстрирующий мягкую перезагрузку.
Листинг 13.3
public const uint FILE_DEVICE_HAL = 0x00000101;
public const uint METHOD_BUFFERED = 0;
public const uint FILE_ANY_ACCESS = 0;
public uint CTL_CODE(uint DeviceType, uint Function,
uint Method, uint Access) {
return
((DeviceType << 16) | (Access << 14) | (Function << 2) | Method);
}
[DllImport("Coredll.dll")]
public extern static uint KernelIoControl(
uint dwIoControlCode, IntPtr lpInBuf, uint nInBufSize, IntPtr lpOutBuf,
uint nOutBufSize, ref uint lpBytesReturned);
private void butReset_Click(object sender, EventArgs e) {
uint bytesReturned = 0;
uint IOCTL_HAL_REBOOT =
CTL_CODE(FILE_DEVICE_HAL, 15, METHOD_BUFFERED, FILE ANY ACCESS);
KernelIoControl(IOCTL_HAL_REBOOT, IntPtr.Zero, 0, IntPtr.Zero,
0, ref bytesReturned);
}