在网络环境中的 Windows XP Pro 下,Ctrl+Alt+Del 会为您提供 Windows 安全提示,如果您按住 Ctrl 并单击关机,则会触发紧急关机。
这似乎将系统关闭得如此之快,甚至没有什么进程可以完成,即几乎就像您刚刚拉下电源/长按电源按钮一样。
我想知道 Windows 是通过什么过程实现如此快速的关机——它是直接通过 ACPI/APM 指示 BIOS 关闭系统吗?如果是这样,如何以任何语言以编程方式实现这一点?
在网络环境中的 Windows XP Pro 下,Ctrl+Alt+Del 会为您提供 Windows 安全提示,如果您按住 Ctrl 并单击关机,则会触发紧急关机。
这似乎将系统关闭得如此之快,甚至没有什么进程可以完成,即几乎就像您刚刚拉下电源/长按电源按钮一样。
我想知道 Windows 是通过什么过程实现如此快速的关机——它是直接通过 ACPI/APM 指示 BIOS 关闭系统吗?如果是这样,如何以任何语言以编程方式实现这一点?
该ExitWindowsEx
功能是标准关闭,即使EWX_FORCE
它仍然关闭所有程序,服务等......它只是不要求/等待它们关闭。
那么解决方案是什么?使用NtShutdownSystem
.
该函数通过刷新缓存、注册表等然后调用 BIOS 来关闭机器电源来执行实际的关机。
在此处查看使用示例: http:
//www.codeproject.com/Articles/34194/Performing-emergency-shutdowns
这可以通过使用系统请求功能在 *nix 系统上完成。通常出于安全原因禁用此功能,但您可以使用 root 权限启用它并立即请求关闭系统电源,如下所示:
echo 1 > /proc/sys/kernel/sysrq-trigger ;
echo o > /proc/sysrq-trigger
其中字母“o”表示“断电”。其他功能可用。https://en.wikipedia.org/wiki/Magic_SysRq_key
你可以使用ExitWindowsEx
withEWX_POWEROFF
和EWX_FORCE
flags set ...