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变量或其他一些与OS通信的方式以完全或诊断模式启动?
答案 0 :(得分:1)
以下是我为解决这个问题所做的工作。我注册了一个ExitBootServices事件回调,并在该例程中检查引导模式是否为BOOT_ON_S4_RESUME。我还检查了我的其他内部条件,所以如果系统从S4唤醒并且我需要强制诊断/完全启动,我只需要执行gRT-> ResetSystem(...)。 ExitBootServices事件足够进入Windows启动过程,因此此时突然重置会导致Hiberfil数据丢失并完全启动。
似乎没有明显的不利影响,例如任何错误消息 - 它在重置后启动清除。在视觉上,重置发生在显示Windows徽标后,因此用户体验也应该没问题。我不知道这种方法是否适用于生产代码,但我认为这是一次成功的实验。