如何从内核态重启系统呢,一个经常被推荐的简单的解决办法是 用驱动来通知一个用户态的服务并调用ExitWindowsEx函数
但是如果你非要想在内核态做这件事呢?那么你可以使用HalReturnToFirmware或NtShutdownSystem函数
但是这些函数都是无文档的,如果你使用它们,你的驱动可能无法通过WHQL认证
这里提供一种简单的、完全有文档的方法:
使用下面的函数
KeBugCheck(POWER_FAILURE_SIMULATE);
也许你会认为这是BugCheck,那么你错了,这并不会引发bugcheck
这样实际上会调用了HalReturnToFirmware(HalRebootMachine)
当执行了BugCheck回调后,无BSOD,无Crash dump,只会进行非常干净、简单和直接的重启动;)
本文介绍了一种在内核态下重启系统的简单且有文档记录的方法。使用KeBugCheck(POWER_FAILURE_SIMULATE)函数可以避免引发BugCheck,而是直接调用HalReturnToFirmware(HalRebootMachine)进行干净的重启,不会出现蓝屏或崩溃转储。

510

被折叠的 条评论
为什么被折叠?



