4. WHQL 认证流程详解:提交门户、HLK/HCK 测试套件、签名与发布流程

WHQL 认证是驱动进入 Windows 生态的必经之路。整个流程可划分为四个核心阶段:测试准备与 HLK/ HCK 套件执行、提交门户上传与处理、微软签名与数字收尾、发布与分发。本章将逐一拆解每个环节的操作要点、工具链和常见陷阱。

⚠ 关键认知: WHQL 认证不是一次性动作,而是一个持续合规的过程。驱动在每次 Windows 功能更新(如 23H2 → 24H2)后,必须重新执行 HLK 测试并提交,否则签名将失效。
WHQL 认证全流程总览 阶段 1 HLK/HCK 测试套件 环境搭建 + 测试执行 阶段 2 提交门户上传 硬件开发中心 / 合作伙伴中心 阶段 3 微软签名 数字签名 + 交叉证书 阶段 4 发布与分发 Windows Update 📌 流程关键点 • HLK 测试必须在与目标 Windows 版本完全一致的 OS 上执行,否则提交会被拒绝。 • 提交门户(硬件开发中心)要求上传 .hlkx 包,该包由 HLK Studio 自动生成。 • 签名后的驱动通过 Windows Update 分发,驱动必须附加数字签名和交叉证书链。

4.1 HLK / HCK 测试套件:环境搭建与执行

HLK(Windows Hardware Lab Kit)是当前 Windows 10/11 的测试框架,HCK 用于 Windows 8.1 及更早版本。测试套件包含数千个针对不同设备类的测试用例,覆盖功能、可靠性、性能和安全。

4.1.1 环境要求

组件 要求 说明
控制器(Controller) Windows Server 2019/2022 管理测试任务、存储结果
客户端(Client) 目标 Windows 版本(如 Win11 24H2) 安装待测驱动,执行测试
网络 控制器与客户端在同一域或工作组 需双向网络连通,防火墙开放特定端口
磁盘空间 控制器 ≥ 100 GB,客户端 ≥ 50 GB 测试日志和 .hlkx 包占用较大空间
💡 最佳实践: 使用虚拟机快照功能,在每次 HLK 测试前创建干净快照。驱动安装失败或系统崩溃后,可快速回滚,避免重新部署环境。

4.1.2 测试执行步骤

  1. 安装 HLK 套件: 在控制器上运行 Setup.exe,选择“Controller + Studio”组件;在客户端上运行 Setup.exe,选择“Client”组件。
  2. 配置客户端: 在控制器 HLK Studio 中“添加客户端”,输入客户端机器名或 IP,确保状态显示为“已连接”。
  3. 创建项目: 在 HLK Studio 中新建项目,选择目标设备类(如 NetworkAdapter、StorageController)。
  4. 选择测试: 系统自动筛选出与设备类相关的测试用例。可手动添加或排除特定测试。
  5. 部署驱动: 将待测驱动 .inf/.sys 文件复制到客户端,通过 HLK Studio 的“部署”功能安装。
  6. 运行测试: 点击“开始测试”,HLK 自动将测试用例分发到客户端执行。测试时长从 30 分钟到数小时不等。
  7. 查看结果: 测试完成后,在 HLK Studio 中查看每个用例的 Pass/Fail 状态。失败项需双击查看详细日志。
  8. 生成 .hlkx 包: 所有测试通过后,点击“创建提交包”,HLK 自动打包为 .hlkx 文件,用于上传门户。
HLK 测试执行流程 安装 HLK 套件 添加客户端 创建项目 选择测试 部署驱动 运行测试 查看结果 生成 .hlkx

4.2 提交门户:硬件开发中心与合作伙伴中心

微软提供两个提交门户:硬件开发中心(Hardware Dev Center) 用于传统 WHQL 提交,合作伙伴中心(Partner Center) 用于现代仪表板管理。两者功能重叠,但合作伙伴中心正逐步取代旧门户。

4.2.1 提交前准备

  • 企业账户: 必须拥有有效的微软合作伙伴网络(MPN)账户,并注册硬件开发中心。
  • 代码签名证书: 从受信任的 CA(如 DigiCert、GlobalSign)购买 EV 代码签名证书,用于对驱动进行预签名。
  • .hlkx 包: 确保所有 HLK 测试通过,包内包含驱动文件、测试日志和结果。
  • 驱动程序包(DP): 包含 .inf、.sys、.cat 文件,以及必要的 DLL 和配置文件。

4.2.2 提交步骤

  1. 登录硬件开发中心: 使用企业管理员账户登录 partner.microsoft.com,进入“硬件”仪表板。
  2. 创建新提交: 选择“驱动程序” → “创建新提交”,填写产品名称、版本、目标 Windows 版本。
  3. 上传 .hlkx 包: 将 HLK Studio 生成的 .hlkx 文件拖拽上传。系统自动解析包内容,显示测试摘要。
  4. 选择签名类型: 选择“WHQL 签名”(标准签名)或“测试签名”(仅用于内部测试)。
  5. 提交审核: 点击“提交”,门户自动进行静态分析、恶意软件扫描和签名验证。审核通常需要 1-3 个工作日。
  6. 查看状态: 在仪表板中跟踪提交状态:Pending → Processing → Signed / Failed。
⚠ 常见失败原因:
• .hlkx 包内包含未通过测试的用例(即使只有一个 Fail,整个提交被拒)。
• 驱动文件使用了不兼容的架构(如 x86 驱动提交到 ARM64 类别)。
• 签名证书过期或未正确链到受信任根 CA。

4.3 签名与发布流程

提交通过后,微软使用内部根证书对驱动进行数字签名。签名后的驱动包含两个关键部分:数字签名(.cat 文件) 和 交叉证书(Cross-Certificate)。

4.3.1 签名文件结构

文件 作用 签名方式
.cat(安全目录) 包含驱动文件的哈希值,验证完整性 微软 WHQL 签名
.sys(驱动二进制) 内核模式驱动,需嵌入签名 交叉证书 + 时间戳
.inf(安装信息) 驱动安装参数,不直接签名 通过 .cat 间接验证

4.3.2 发布渠道

  • Windows Update(WU): 驱动自动推送到目标系统,适用于广泛分发。需在提交时勾选“通过 Windows Update 分发”。
  • 手动下载: 驱动发布到微软更新目录(Microsoft Update Catalog),用户可手动搜索安装。
  • OEM 预装: 驱动集成到 OEM 系统镜像中,随新设备出厂。
签名与发布流程 提交通过 (审核完成) 微软签名 (WHQL 根证书) 发布到 WU (自动分发) 终端安装 (驱动更新) 📌 签名后的驱动包含时间戳,确保在证书过期后仍可验证。驱动发布到 WU 后,通常需要 24-48 小时才能在全球范围内推送。

4.4 常见问题与调试技巧

🔧 调试清单:
  • HLK 测试失败: 检查客户端系统日志(Event Viewer → Windows Logs → System),查找驱动崩溃或超时记录。
  • 提交被拒: 在硬件开发中心查看“审核报告”,定位具体失败项。常见原因包括 .inf 语法错误、缺少依赖文件。
  • 签名验证失败: 使用 signtool verify /pa /v driver.sys 检查签名链。确保交叉证书已安装到“受信任的根证书颁发机构”。
  • Windows Update 不推送: 确认驱动在提交时勾选了“自动分发”,且目标系统满足硬件 ID 匹配条件。
# 使用 signtool 验证驱动签名
signtool verify /pa /v mydriver.sys

# 输出示例(成功时):
# Signing Certificate Chain:
#     Issued to: Microsoft Windows Hardware Compatibility Publisher
#     Issued by: Microsoft Windows Third Party Component CA 2014
#     Expires:   2027-01-01
# The signature is timestamped: 2025-03-15 10:30:00
# Successfully verified: mydriver.sys
💡 效率提示: 在开发阶段,使用“测试签名”模式(bcdedit /set testsigning on)可跳过 WHQL 签名验证,加速调试循环。但最终提交前必须关闭测试签名并执行完整 HLK 测试。