有没有可靠的方法可以在运行时检测固件是来自Windows内核驱动程序的BIOS还是UEFI,而无需访问磁盘?
尝试 ExGetFirmwareEnvironmentVariable 函数。 使用空变量名称和虚拟 GUID 调用此函数,以确定 Windows 是使用 BIOS 还是 UEFI 安装的。 有关更多详细信息,请参阅文档中所述的以下内容。
基于 BIOS 的传统平台不支持固件环境变量。对ExGetFirmwareEnvironmentVariable的调用在基于BIOS的传统平台上总是失败;如果在同时支持旧版 BIOS 和 UEFI 的平台上使用旧版 BIOS 安装 Windows,它们也会失败。若要标识这些条件,请使用虚拟 VariableName 字符串(例如,空字符串)和虚拟 GUID(例如) 调用函数,例如
"{
00000000-0000-0000-0000-000000000000}"为供应商指导参数。在基于旧版 BIOS 的平台上,或者在同时支持旧版 BIOS 和 UEFI 但使用旧版 BIOS 安装 Windows 的平台上,该功能将失败并STATUS_NOT_IMPLEMENTED。在基于 UEFI 的平台上,该函数将失败,并显示特定于固件的错误(如 STATUS_VARIABLE_NOT_FOUND),以指示虚拟 GUID 命名空间不存在。