摘要:驱动更新是否需要重新测试和提交,不能只看版本号或修改行数。应先比较驱动包中的二进制文件、INF 配置、支持硬件和目标系统,再判断适用的微软提交路径。DUA 对 PE 二进制文件有明确限制,EV 代码签名证书也不能代替兼容性测试。把文件差异和原认证范围核对清楚,才能安排更新与发布。
一个已经通过认证的驱动修复了问题,开发团队准备发布新版本。此时最容易出现的分歧,是一方认为“改得很少,沿用旧认证就行”,另一方要求把全部测试从头跑完。
先不要用这两种结论排期。应拿到准备交付的新驱动包,与原来提交的包逐项比较。修改发生在哪个文件、有没有扩大支持范围,比版本号从1.0 升到 1.1 更能说明需要复核什么。
通常所说的 WHQL 认证,与微软 Windows 硬件兼容认证及 HLK 测试相关。本文讨论已经有提交记录的驱动如何评估后续更新,不将普通应用程序签名当成驱动认证。
先比较两个实际交付包
复核应从最终文件开始。让开发提供源码变更说明,同时让发布人员比较新旧驱动包的文件清单、哈希、INF 和适用系统。源码仓库里只改了一处,并不表示构建产物也只变了一处。
例如,仅重新编译就可能产生不同的SYS 或 DLL。即使修复没有增加新功能,也应将它记为二进制发生变化,而不是“功能没变,所以文件没变”。文件哈希可以帮助发现差异,但不能单独决定认证路径。
| 本次更新发生的变化 | 应优先核对的内容 |
| SYS、DLL 等文件发生变化 | 是否属于 PE 二进制,以及受影响的功能和测试范围 |
| 仅修改 INF 或其他非 PE 文件 | 是否符合 DUA 条件,安装行为和适用范围是否改变 |
| 新增硬件 ID 或设备型号 | 原有认证和测试结果是否覆盖新增对象 |
| 增加目标 Windows 版本或架构 | 对应系统要求、测试环境和提交范围 |
| 修改发布名称或提交信息 | 属于元数据调整,还是实际驱动包也发生了变化 |
这张表用于组织复核,不是微软的“免测清单”。是否可以使用某条更新路径,仍需以对应项目和当前提交要求为准。
DUA 不能拿来替换已经修改的 SYS
微软提供 DriverUpdate Acceptable,简称 DUA,供符合条件的驱动更新使用。它有一个容易被忽略的限制:DUA 提交不得新增或修改 PE 二进制文件。 SYS、DLL、EXE 是常见类型,判断依据是文件本身是否为 PE,而不只是扩展名。
因此,修复写进 SYS 后,即使只改了一行逻辑,也不能凭“改动小”直接按 DUA 处理。给文件改后缀,同样不会改变它的二进制格式。
非 PE 文件可以在 DUA 中新增、修改或删除,但这不表示所有 INF 改动都天然适合沿用原有范围。若安装对象、依赖或支持范围随之变化,仍应核对适用条件,并安排相应验证。基础提交 INF 引用的 PE 文件,也不能随意从 DUA 包中删掉。
使用 DUA 前,还要确认原始提交是否符合要求、当前账户能否获取 DUA shell。微软说明,attestation 签名驱动不适用 DUA;它不能作为所有驱动更新的通用入口。下载的 shell 也需要由兼容的 HLK Studio 打开,旧版本工具未必能识别新的包格式。
二进制或支持范围变化后怎样安排复核
对于不符合 DUA 条件的更新,应重新确认测试和提交安排。重点是把实际改动对应到测试对象,再按微软适用规则准备测试结果与新包。不能因为无法走 DUA,就自行推断“必须重跑全部项目”;也不能只跑开发人员认为相关的一项,就宣布覆盖了认证要求。
可以先在变更说明中回答四个问题:
- 哪些驱动文件重新构建,涉及什么行为。
- 原来支持的设备和系统有没有变化。
- 安装、升级、卸载及异常恢复是否受到影响。
- 当前提交路径需要哪些测试结果,原有结果是否允许使用。
例如,修复待机恢复问题,应把相应设备状态与恢复后的行为放进复核范围;新增设备型号,应核对该型号是否仍在原测试和提交覆盖内。这些是测试规划的起点,不是对认证结果的预先承诺。
测试结束后,发布人员还应确认测试包、提交包和准备交付的包能够对应。不能测试一份二进制,提交前又重新构建另一份,却只因为版本号相同就直接替换。
EV 代码签名证书负责哪一步
微软的 DUA 打包指南要求使用 EV 代码签名证书对提交包签名。这项签名用于提交链路中的身份与完整性验证,与驱动是否满足兼容认证要求承担不同职责。
GlobalSign 提供 EV 代码签名证书,企业可按实际需求选择 Token 或 HSM 实现。准备驱动发布时,应提前确认组织资料、证书状态、硬件可用性和获授权的签署人员,让最终提交包能够按微软要求完成签名。
证书续订了,不代表驱动自动获得新的兼容认证;驱动拿到了微软返回的签名包,也不等于企业后续重新打包的所有文件都保留同样结果。下载返回文件后,应保存对应提交编号、认证信息、文件哈希与发布记录,并在目标环境完成安装验证。
对更新项目,比较实用的排期依据是一份简短结论:本次改了什么、采用什么提交路径、需要什么测试、谁负责最终签署和交付。先把这些内容说清,才能判断是安排一次受限更新,还是为新一轮测试留出时间。
FAQ
Q1:只调整驱动版本号,就一定要重新跑完整的 HLK 测试吗?
A:不能只凭版本号判断。先检查最终包是否改变、改变了哪些文件及支持范围,再核对当前提交路径。版本号只是识别信息,不是通用的免测或重测条件。
Q2:SYS 只修复了一处问题,能否通过 DUA 更新?
A:若 SYS 属于 PE 二进制且已经修改,就不符合 DUA 不得新增或修改 PE 文件的限制。需要按适用规则重新评估测试和提交路径。
Q3:只修改 INF,是不是可以直接替换原有发布包?
A:应先评估 DUA 适用性和 INF 引起的实际变化,再按对应流程创建、签名和提交更新包。允许修改非 PE 文件,不等于允许跳过提交,也不代表原认证范围无限扩展。
Q4:重新购买 EV 代码签名证书,能解决驱动测试失败吗?
A:EV 证书处理发布者身份与相应签名需求。测试失败仍应根据失败项目、驱动行为和测试环境排查,更换证书不能代替修复与验证。
关于 GlobalSign 代码签名
GlobalSign 为合法注册的组织提供标准和 EV 代码签名证书,国内方案可按需求确认 Token 或 HSM 实现。对于驱动发布团队,EV 证书可用于满足相应微软提交流程的签名要求;兼容性测试、认证提交和最终分发仍应按照微软规则执行。
资料来源
Microsoft Learn 驱动更新包与 DUA 文件限制
https://learn.microsoft.com/en-us/windows-hardware/test/hlk/user/create-a-driver-only-update-package
Microsoft Learn 已有硬件提交的更新方式
https://learn.microsoft.com/en-us/windows-hardware/drivers/dashboard/hardware-submission-update
GlobalSign 代码签名证书
https://www.globalsign.cn/code-signing