Windows UEFI 固件更新平台
Windows 支持平台通过使用 UEFI UpdateCapsule 函数处理的驱动程序包安装系统和设备固件更新。 此平台提供一致的可靠固件更新体验,并改进了最终用户的重要系统固件更新的可发现性。
UEFI 固件更新平台指南适用于构建运行 Windows 的硬件平台的 SoC 供应商和 OEM。 以下操作系统版本支持 UEFI 固件更新平台:
Windows 8
Windows 8.1
Windows 10 桌面版(家庭版、专业版、企业版和教育版)
Windows 10 中的 UEFI 固件更新支持
运行 Windows 10 桌面版的所有系统都应按照本文档本节中所述的基于 UpdateCapsule 的更新过程实现 UEFI 固件更新。
UEFI 固件更新平台概述
有两种类型的固件可以通过 Windows 提供服务:系统固件和设备固件。 系统固件负责向整个系统提供关键的启动和运行时服务,并且设备固件与集成到系统中的特定设备相关联。 此类设备固件通常与设备驱动程序协同工作,允许 OS 向 OS 级服务和应用程序公开设备。
系统固件更新
基于 UEFI 的系统的系统固件更新将部署为设备驱动程序包(INF)。 Windows 将使用平台提供的信息来确保更新包仅适用于相应的系统。 固件更新包包含包含系统固件映像的二进制文件。 固件更新包在最终用户系统上后,Windows 将使用 UEFI UpdateCapsule 函数将固件有效负载移交给平台固件进行处理。
将更新部署为驱动程序包允许固件更新过程与许多现有部署和服务工具保持一致,并确保为硬件供应商创建简单的更新包。
尽管固件更新作为驱动程序包传递,但这并不意味着更新是作为实际驱动程序编写的。 驱动程序包包含 INF 文件和包含系统或设备固件映像的二进制文件。
设备固件更新
为了更新设备固件,可将设备固件分配给以下两个类别之一:
可更新 UEFI 的设备固件。
可以使用与系统固件相同的机制使用设备驱动程序包更新此设备固件。 设备固件更新作为固件更新包分发。 固件更新包在最终用户系统上后,Windows 将使用 UEFI UpdateCapsule 函数将设备固件有效负载移交给平台固件进行处理。 此过程与 Windows 关闭系统固件更新有效负载的方式相同,下面对此进行了讨论。
建议使用离散固件更新驱动程序包更新设备固件。 但是,设备固件也可能随系统固件一起更新,作为单个固件更新驱动程序包的一部分。
不应使用 UEFI 来更新外围设备。 UEFI 要求重启期间存在设备,以应用无法通过(外部、可移动)外围设备保证的固件更新。
可更新驱动程序的设备固件。
在正常的 Windows OS 运行时中,设备驱动程序可以更新此设备固件。 本文未介绍使用普通 Windows OS 驱动程序更新设备固件。
Windows 固件更新的系统要求
为了使系统与 Windows 固件更新机制兼容,它必须满足以下要求:
系统必须实现由 UEFI 规范 2.8 的第 8.5.3 节定义的 UpdateCapsule 和 QueryCapsuleCapabilities。
UpdateCapsule 用于在 Windows 和平台固件之间传递固件更新有效负载。
平台固件必须支持 Windows 启动的固件更新。
系统固件和某些类设备固件必须使用此过程进行更新。 固件代码识别传递给 UpdateCapsule 的固件更新有效负载,并启动更新过程。 实现由合作伙伴拥有。
必须在 EFI 系统资源表中指定固件资源(ESRT)
固件资源允许 Windows 显示具有硬件 ID 的设备实例,该 ID 将用于将系统或设备固件更新定向到相应的系统和设备。 它还介绍了当前固件版本,并为以前的更新提供状态。
系统固件更新存在单个条目。 具有可更新固件的所有设备都必须在 ESRT 中指定的资源,除非设备固件作为系统固件更新的一部分进行更新。
有关详细信息,请参阅 ESRT 表定义。