固件更新状态

此时预计将应用所有固件更新,以及 Windows OS 加载程序后续调用在 ESRT 中反映的所有更新的结果。 回顾 ESRT 表定义中的 ESRT 示例和创作更新驱动程序包中的固件资源更新驱动程序包 INF 示例,如果固件成功应用了 firmware.bin 版本 2,则新的 ESRT 表将反映这一点。 请注意,表中的唯一区别是系统固件资源条目的“固件版本”和“上次尝试版本”字段已更改,以反映成功应用的新固件版本。

字段 注释
固件资源计数 2 此表包含两个固件资源条目。
固件资源最大值 2 此表分配包含足够的空间来描述最多两个资源。
固件资源版本 1 此表使用的固件资源条目格式版本为 1。
固件资源条目数组 固件资源条目 0
固件类 (SYSTEM_FIRMWARE) 此 GUID 标识通过 PnP 进行更新的系统固件。
固件类型 1 系统固件类型为 1。
固件版本 2 当前系统固件版本为 2。
最低支持的固件版本 2 将支持的最低固件版本更改为 2,以便固件无法回滚到低于版本 2 的版本。 当固件更新包含安全修补程序时,此值通常会更改。
封装程序标志 0 系统固件不定义任何专用封装程序更新标志。
上次尝试版本 2 尝试更新的最后一个系统固件版本是 2
上次尝试状态 0 上次系统固件更新尝试成功。
固件资源条目 1
固件类 (DEVICE_FIRMWARE) 此 GUID 标识通过 PnP 进行更新的设备固件。
固件类型 2 设备固件类型为 2。
固件版本 1 当前设备固件版本为 1。
最低支持的固件版本 1 将支持的最低固件版本保留为 1。 如有必要,固件可以回滚到版本 1。
封装程序标志 0x8010 设备固件定义专用封装程序更新标志 (0x8010)。
上次尝试版本 1 尝试更新的最后一个设备固件版本是 1。
上次尝试状态 0 上次设备固件更新尝试成功。

如果无法成功应用固件,则 ESRT 中的固件版本、上次尝试版本和上次尝试状态条目将反映失败的更新尝试。 例如,如果系统尝试将固件版本 1 更新到版本 2,但无法成功应用,则固件版本 = 1、上次尝试版本 = 2 和上次尝试状态!= 0。 (即“上次尝试状态”设置为相应的非零错误代码,指示发生失败的原因。 有关此条目的有效错误代码列表,请参阅 ESRT 表定义

尽管标准更新策略要求固件版本只能增加,但可以出于测试目的通过策略设置禁用此策略,如下面的回滚固件更新部分所述。

系统重置

系统重置允许最终用户将系统还原回出厂设置。 通过在制造过程中将预加载的 Windows 映像重新安装到系统来实现此目的。 将重新安装整个 OS,包括驱动程序和应用程序。

考虑到防止固件跨安全边界回滚的安全要求,系统重置无法回滚固件版本以匹配工厂中部署的原始固件。 这意味着所有版本的固件都必须向后兼容该平台上提供的所有驱动程序和操作系统版本。 如果固件不兼容,这可能会导致用户将其系统退回给制造商。

回滚固件更新

在某些情况下,可能需要回滚固件更新,例如在更新测试期间。 每个 ESRT 报告的固件资源都有以下注册表项中的条目:HKLM\SYSTEM\CurrentControlSet\Control\FirmwareResources

该条目是一个键,名称等同于用于报告 ESRT 中资源的 GUID。 若要允许固件回滚,请创建一个名为策略REG_DWORD 值,并将该值设置为 1。 给定的固件资源只能回滚到其各自最低支持的固件版本,如 ESRT 中指定的版本。 这是为了防止固件回滚超出对固件进行关键安全修复的点。 如果要回滚固件版本以满足这些条件,OS 加载程序将更新到较旧版本。

ESRT 表定义

即插即用设备

创作更新驱动程序包

处理更新

来自 UEFI 环境的设备 I/O

无缝危机预防和恢复