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

Mar*_*tin 1 windows shutdown acpi

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

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

有什么不同?参考资料,确凿的事实?

注释/说明/背景:

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

Cod*_*ray 5

一样的。

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

基本上,在任何一种情况下都能产生奇迹的是对ExitWindowsEx函数的调用,它是程序员使用的 Windows API 的一部分。*如果指定EWX_POWEROFF标志,则系统关闭并关闭电源。也可以使用EWX_FORCE标志调用该函数,这将按照听起来的方式进行——强制关闭,而不给正在运行的应用程序延迟或取消它的能力。如果你这样做,关机可能会发生得更快,但它不会是一个完全“干净”的关机,因此是危险的。

您看到的行为差异可能是由于启动软件关闭的方式造成的。例如,当您执行 时shutdown.exe,您可以指示何时启动关闭请求的超时值。在此期间,可以通过shutdown.exe再次运行带有/a标志(中止挂起的关闭)来取消挂起的关闭。60 秒是此超时期限的一个非常常见的值。

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

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