从Windows 10 1809开始,操作系统产生了大量的软件SMI。
我们在单独的处理器核心上运行我们的实时应用程序,每个SMI都会产生不可预测的延迟。在1809年以前,总是可以在BIOS中禁用SMI。
Windows中的调用堆栈如下所示:
代码语言:javascript复制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变量?