固件更新状态

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

领域 价值 注释
固件资源计数 2 此表包含两个固件资源条目。
固件资源最大值 2 此表分配包含足够的空间来描述最多两个资源。
固件资源版本 1 此表使用的固件资源条目格式版本为 1。
固件资源条目数组 固件资源条目 0
Firmware 类 (系统固件) 此 GUID 用于标识通过 PnP 更新的系统固件。
固件类型 1 系统固件类型为 1。
固件版本 2 当前系统固件版本为 2。
最低支持的固件版本 2 将支持的最低固件版本更改为 2,以便无法将固件回滚到低于版本 2 的版本。 当固件更新包含安全修补程序时,此值通常会更改。
胶囊标记 0 系统固件不定义任何专用胶囊更新标志。
上次尝试版本 2 尝试更新的最后一个系统固件版本为 2
上次尝试状态 0 上次系统固件更新尝试成功。
固件资源条目 1
Firmware 类 (设备固件 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 中所指定。 这是为了防止固件回退超出对固件进行关键安全修复的点。 如果您要回滚的固件版本符合这些条件,操作系统加载器将更新到较早的版本。

ESRT 表定义

即插即用设备

编写更新驱动程序包

处理更新

来自 UEFI 环境的设备 I/O

无缝危机预防和恢复