190 likes | 487 Views
驱动程序的质量测试方法与 WHQL 认证. 王承罡 微软中国技术中心. 内 容. 什么是 WHQL? HCT 测试工具的理解与使用 几个重要的驱动测试工具 如何调试 HCT 发现的测试错误 如何在线提交 HCT 测试结果 驱动程序数字签名的未来策略. 缩写对照表. WHQL – Windows Hardware Quality Lab WHOS – Windows Hardware Online Service http://www.microsoft.com/whdc Http://winqual.microsoft.com
E N D
驱动程序的质量测试方法与WHQL认证 王承罡 微软中国技术中心
内 容 • 什么是WHQL? • HCT测试工具的理解与使用 • 几个重要的驱动测试工具 • 如何调试HCT发现的测试错误 • 如何在线提交HCT测试结果 • 驱动程序数字签名的未来策略
缩写对照表 • WHQL – Windows Hardware Quality Lab • WHOS – Windows Hardware Online Service • http://www.microsoft.com/whdc • Http://winqual.microsoft.com • DFW - Designed for Windows Logo Program • DQS – Driver Quality Signature Program • DDK – Driver Development Kit • HCT – Hardware Compatible Test • Digital Signature – 驱动程序数字签名.cat file • Symbol - 驱动程序符号文件.pdb file
WHQL测试 • 完成HCT自测试 • 在线提交HCT测试结果 • 在线获得来自Microsoft的数字签名 • 申请Designed for Windows 徽标 (可选)
HCT 测试准备 • 选择正确的硬件分类 • 已有分类不能涵盖的设备归类于“unclassified” • 搭建符合要求的硬件测试平台 • 用作测试的PC机必须有Designed for Windows 徽标. • 所有包含的设备必须有Designed for Windows 徽标. • 按照要求搭建测试网络 • 搭建符合要求的软件测试环境 • 安装Windows XP或Windows Server 2003操作系统 • 安装含有数字签名的设备驱动程序 • 安装最新的HCT工具集.
HCT工具集 • 是由多个测试工具组成的测试包 • 总线相关测试. USB, PCI, 1394, 等等 • 驱动程序质量测试. Check INF, Driver Verifier, Driver Path Exerciser • ACPI功能测试. ACPI Sleep, 等等 • 压力测试, System Stress, 等等 • 硬件功能测试 • 还包含有一些独立测试工具子集: NDIS网络功能测试集, DCT图形测试工具集, 等等
HCT中的驱动程序质量测试工具 • Driver Verifier • 跟踪14项不同的驱动程序执行状态,识别出 I/O验证, 内存池使用, 过少的资源状态或其它问题 • Driver Path Exerciser • 测试所有的IRP处理以识别出内存泄露问题 • Check INF • 检查INF文件语法 • Public import • 检测驱动程序是否调用了“非法的”功能调用
其它驱动程序质量测试工具 • PREfast for Drivers (包含于WDK中) • 分析驱动程序内存泄露、 pool tags的不正确使用和其它可能发生的错误 • Call Usage Verifier • 检测初始化错误, IRP堆栈错, 和spin Locks和interlocked lists一致性错误 • Static Driver Verifier • 给出错误的分支条件,来检测驱动程序中可能存在的执行路径有关的问题。这些错误条件包括二次调用IoCompleteRequest例程. 仅对C语言程序有效. • WinDBG ----Windows debug tool • 通过双机调试,发现蓝屏错误的原因
HCT测试中… • 依照联机文档的步骤配置测试环境开始一步步测试,多数测试是自动测试,不需要人工干预 • 认真研读测试规范(Test Specification) • 网上查阅 WHQL Errata • 如果测试环境发生硬件变化,需要重新测试 • 典型测试时间: • 系统测试总时间约100小时 • 未归类USB设备测试约8小时
调试 HCT 测试错误 • 重复测试 • 人工验证 • 排出设备原因 • 使用 WinDBG 调试驱动程序 • 对比相同硬件分类的其它设备 • 使用操作系统和驱动程序的checked builds • 查找 Errata • 向WHQL Team报告
让HCT做得更顺畅 • 需要申请合法的 PnP ID. • 测试前即增加 xxx.cat 到 xxx.inf 文件中. • 在HCT测试前完成PREfast 和 Driver Verify 测试 • 不能忽略ACPI功能 • 严格依照工业标准设计硬件的Firmware
在线提交WHQL测试结果 • 申请winqual帐号 • 网上提交经 Verisign Digital ID签名的 winqual.exe • 建立测试结果文件: whqlhct.cab • 下载和编辑WHQL readme文件. • 准备提交文件夹 • 测试结果文件夹: whqlhct.cab, readme.doc • 驱动程序文件夹: 驱动程序文件, *.sys, *.inf • 符号文件文件夹(可选):*.pdb • 在线提交以上文件夹 • 提交网址: http://Winqual.microsoft.com • 使用 Verisign Digital ID签名提交文件压缩包 • 通过提交审核后,可在线下载驱动程序签名
驱动程序质量测试未来策略 • 开发与测试统一到一个工具包中 • ≈DDK + HCT + 其它工具 • 集成文档 , 测试, 工具和开发环境 • 可开发所有版本的Windows驱动程序 • DTM替代HCT • DTM = 驱动程序测试管理器 • 新增 DQS 程序 • Driver Quality Signature Program • 计划与Windows Vista RC一同发布
Appendix: 网上资源: • 微软中国技术中心WHQL专栏 • http://www.microsoft.com/china/CTC/WHQL/whqlpage.asp • 硬件驱动中心 • http://www.microsoft.com/whdc/default.mspx • 下载WHQL测试工具: • http://www.microsoft.com/whdc/whql/WHQLdwn.mspx • 下载驱动程序调试工具WinDBG: • http://www.microsoft.com/whdc/devtools/debugging/default.mspx • 查询WHQL Errata • http://www.microsoft.com/whdc/whql/WHQLerr.mspx WHQL国内支持:ctcwhql@microsoft.com