【发布时间】:2015-12-24 08:32:08
【问题描述】:
默认情况下,Windows 8 和 10 是在启用 Hiberboot 的情况下启动的,因此当您转到 Start->Power->Shutdown 时,系统实际上会进入 S4,而不是 S5。在某些情况下,我需要能够强制 Windows 执行完全启动,而不是从 S4“唤醒”,无论它之前是如何关闭的。我试图强制我的 UEFI BIOS BootMode 始终为 BOOT_WITH_FULL_CONFIGURATION,但这无济于事 - Windows 仍然采用快速启动路径。
过去,可以在 BIOS 中使用 Simple Boot Flag 设置 DIAG 模式;这可能对我有用,但 Windows 8/10 似乎仍然不支持它。是否有一些 UEFI 变量或其他一些与操作系统通信的方式以在完全模式或诊断模式下启动?
【问题讨论】:
-
您的问题的解决方案将与您使用的实现和硬件高度相关,即新的英特尔芯片具有在 CMOS 电池重置之前保持启动状态的记忆棒寄存器。您能否提供有关您使用的硬件的更多信息?
-
为什么解决方案要与硬件绑定?我需要我的 UEFI 驱动程序以或多或少的标准方式告诉操作系统,尽管它选择通过休眠方式关闭,但在此启动时它需要丢弃 hiberfil 数据并执行完全启动或诊断启动。我使用基于 Atom 的平台进行实验,但这必须适用于任何硬件。您能否详细说明在粘性寄存器中保留了哪些启动状态信息,操作系统应该检查这些信息以做出启动类型决定?
-
这是一个相当复杂的话题。首先,固件始终知道您正在从哪个 ACPI 状态启动,并据此决定选择哪种启动路径。固件获取该信息的方式取决于硬件和固件。您的应用程序的实现并非易事。你想欺骗 ACPI 状态和操作系统关于以前的硬件状态。请查看this 帖子。还请提供确切的 Atom 模型,以便我查看数据表并将您指向寄存器。