gpt4 book ai didi

windows - 如何在 Windows 中禁用软件 SMI(系统管理中断)

转载 作者:行者123 更新时间:2023-12-03 11:06:42 36 4
gpt4 key购买 nike

从Windows 10 1809开始,OS会生成大量的软件SMI。
我们在单独的处理器内核上运行我们的实时应用程序,每个 SMI 都会产生不可预测的延迟。在 1809 年之前,始终可以在 BIOS 中禁用 SMI。
Windows 中的调用堆栈如下所示:

hal!HalEfiGetEnvironmentVariable+0x56       
hal!HalGetEnvironmentVariableEx+0xb572
nt!IopGetEnvironmentVariableHal+0x2a
nt!IoGetEnvironmentVariableEx+0x85
nt!ExpGetFirmwareEnvironmentVariable+0x91
nt!ExGetFirmwareEnvironmentVariable+0x110ce3
nt!NtQuerySystemEnvironmentValueEx+0x6e

SMI 由 OUT 指令生成到端口 0xb2。需要从 NVRAM 读取 UEFI 变量。当 BIOS 处于传统模式时,没有 SMI。

是否可以配置 Windows,使其不会使用 SMI 访问 UEFI 变量?

最佳答案

简短的回答是否定的,不可能将 Windows 配置为在 UEFI 变量访问时不生成 SW SMI,因为这些 SMI 不是由 Windows 生成的。 SMI 在固件内部生成。

所有支持 UEFI 的操作系统都通过 GetVariable() 和 SetVariable() 服务读取/写入 UEFI 变量,这些服务是 UEFI 固件通过系统表向操作系统公开的运行时服务的一部分 - 请参阅 UEFI 规范第 8 节。当前出于安全原因,大多数固件中变量服务的实现是在 SMM 中处理实际的获取/设置变量请求。

因此,负责生成 SW SMI 的是设备的固件,而不是操作系统。但是,操作系统和某些系统服务/应用程序绝对需要使用 UEFI 变量,因为它是支持 UEFI 的操作系统应该如何在 UEFI 固件上运行。

关于windows - 如何在 Windows 中禁用软件 SMI(系统管理中断),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59530216/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com