软件启动关机和使用电源按钮之间的区别?

软件启动关机和使用电源按钮之间的区别?

可以通过软件关闭 Windows,即单击某处(“开始”按钮/关机),或使用 shutdown.exe 等工具。

也可以通过按下计算机上的电源按钮来关闭 Windows。

有什么区别?参考资料,还是确凿的事实?

说明/澄清/背景:

  • 在我看来,按下电源按钮似乎会让 Windows 关机得更快,尤其是 Windows XP:我们公司网络中运行 XP 的计算机通常需要一分钟才能通过软件关闭,但使用电源按钮时它们总是在几秒钟后关闭。
  • 我知道可以配置按下电源按钮时 Windows 应该做什么。
  • 我说的是短时间按下电源按钮,不要按住几秒钟。
  • 一个ACPI 规范,第 28 页:“系统如何处理此请求取决于从用户偏好、用户功能请求和应用程序数据中得出的策略问题。”但是Windows 可以吗?
  • 我在网上搜索了很多猜测和推测,但没有找到确凿的事实。请不要再提供更多的猜测,谢谢。

答案1

一样的。

就像你说的,你可以力量通过按住电源按钮较长时间(大约 4 秒钟)来关机,但这实际上是切断电源。 ACPI 启动的关机与通过软件调用的关机相同。 这两种方式,机器上运行的所有应用程序都必须被告知即将关机(可能中止关机,具体取决于 Windows 版本),并正常关闭它们自己和它们打开的任何文件。 这一切都需要时间。

基本上,无论哪种情况,让魔法发生的都是对ExitWindowsEx函数,它是程序员使用的 Windows API 的一部分。*如果指定该EWX_POWEROFF标志,系统将关闭并关闭电源。 也可以使用该EWX_FORCE标志调用该函数,这将执行听起来很像的操作 — 强制关机,而不让正在运行的应用程序延迟或取消关机。 如果您这样做,关机可能会更快发生,但这不是完全“干净”的关机,因此很危险。

您看到的行为差异可能是由于软件关机的启动方式所致。例如,当您执行时,您可以指示应启动关机请求的超时值。在此期间,可以通过使用标志再次shutdown.exe运行来取消待处理的关机(以中止待处理的关机)。60 秒是此超时期限的一个相当常见的值。shutdown.exe/a

其余的差异可能只是感知上的。

* Windows 是一个多用户操作系统,这一事实可能会使事情变得更加复杂。但这超出了本文的重点。任何其他启动关机的方法(例如InitiateSystemShutdown)都会有类似的行为。

答案2

当您按下电源按钮时,系统会收到 ACPI 信号,表示电源按钮已被按下。系统对此信号的响应由系统的设置决定。对于 Windows,系统可能配置为在按下电源按钮时关机、进入睡眠或休眠状态。

无论如何,操作系统都会对按下的电源按钮做出响应,并且其反应方式与您通过菜单或编程指示系统关机、睡眠或休眠的方式基本相同。

相关内容