Windows 支持通过使用 UEFI UpdateCapsule 函数的驱动程序包安装系统和设备固件更新的平台。 此平台为构建运行 Windows 的硬件平台的 SoC 供应商和 OEM 提供了一致的可靠固件更新体验。
在本文中,你将了解:
- 如何在 Windows 系统上实现 UEFI 固件更新
- 固件更新的系统要求
- 系统和设备固件更新之间的差异
- 实现步骤和用户体验注意事项
UEFI 固件更新平台指南介绍了如何在运行 Windows 8、Windows 8.1 和 Windows 10 桌面版(家庭版、专业版、企业版和教育版)的系统上实现固件更新。 此实现可提高最终用户重要系统固件更新的可发现性。
Windows 10 中的 UEFI 固件更新支持
运行 Windows 10 桌面版的所有系统都应按照本文档本节中所述的基于 UpdateCapsule 的更新过程实现 UEFI 固件更新。
UEFI 固件更新平台概述
Windows 可以服务两种类型的固件:
- 系统固件:向整个系统提供关键的启动和运行时服务
- 设备固件:与集成到系统中的特定设备相关联,通常与设备驱动程序协同工作,将设备公开给 OS 级服务和应用程序
系统固件更新
可以将基于 UEFI 的系统的系统固件更新部署为设备驱动程序包(INF)。 Windows 使用平台提供的信息来确保更新包仅适用于相应的系统。 固件更新包包含具有系统固件映像的二进制文件。 固件更新包在最终用户系统上后,Windows 使用 UEFI UpdateCapsule 函数将固件有效负载移交给平台固件进行处理。
将更新部署为驱动程序包允许固件更新过程与许多现有部署和服务工具保持一致,并确保为硬件供应商创建简单的更新包。
尽管固件更新作为驱动程序包传递,但更新不会作为实际驱动程序进行编写。 驱动程序包包含一个 INF 文件和一个包含系统或设备固件映像的二进制文件。
设备固件更新
为了更新设备固件,可将设备固件分配给以下两个类别之一:
设备固件可通过 UEFI 更新。
可以使用与系统固件相同的机制使用设备驱动程序包更新此设备固件。 设备固件更新作为固件更新包分发。 固件更新包在最终用户系统上后,Windows 将使用 UEFI UpdateCapsule 函数将设备固件有效负载移交给平台固件进行处理。 此过程与 Windows 关闭系统固件更新有效负载的方式相同,下面对此进行了讨论。
建议使用离散固件更新驱动程序包更新设备固件。 但是,设备固件也可能随系统固件一起更新,作为单个固件更新驱动程序包的一部分。
不应使用 UEFI 来更新外围设备。 UEFI要求,为了应用不能通过(外部、可移动)外围设备保证的固件更新,设备必须在重启过程中保持连接。
可以通过驱动程序更新的设备固件。
在正常的 Windows OS 运行时中,设备驱动程序可以更新此设备固件。 本文未介绍使用普通 Windows OS 驱动程序更新设备固件。
Windows 固件更新的系统要求
你的系统必须满足以下要求才能与 Windows 固件更新兼容:
实现 UpdateCapsule 和 QueryCapsuleCapabilities 功能
UpdateCapsule 在 Windows 和平台固件之间传递固件更新有效负载。
支持 Windows 启动的固件更新
系统固件和某些设备固件必须使用此过程进行更新。 固件代码必须识别传递给 UpdateCapsule 的固件更新有效负载,并启动更新过程。
在 EFI 系统资源表中指定固件资源(ESRT)
固件资源使 Windows 能够:
- 使用硬件 ID 呈现设备实例
- 针对相应系统和设备的目标系统或设备固件更新
- 描述当前固件版本并为以前的更新提供状态
要求:
- 系统固件更新的一个条目
- 具有可更新固件的所有设备都必须有 ESRT 资源(除非作为系统固件的一部分进行更新)
下一步: 了解 ESRT 表定义。
后续步骤
选择与实现阶段匹配的指南:
通过固件驱动程序包进行系统和设备固件更新 - 了解如何打包和部署固件更新
实现对 UEFI 固件更新的支持 - 获取分步实施指南
UEFI 固件更新的用户体验 - 了解最终用户更新体验