最近开始了解硬件驱动的数据签名和Windows的WHQL认证(Win10系统,其他系统请查看微软官方技术文档),现将查阅到的WHQL的技术资料分享给大家。以下为微软官方的一段原话:
适用于 Windows 10 的 Windows Hardware Lab Kit (Windows HLK) 是 Windows 徽标工具包 (WLK) 和 Windows 硬件认证工具包 (Windows HCK) 的进化版。它可帮助公司交付与 Windows 兼容且能在 Windows 10 桌面版(家庭版、专业版和企业版)以及 Windows Server 2016 上可靠运行的系统、软件和硬件产品。就像以前的版本那样,适用于 Windows 10 的 Windows HLK 中的测试可让你充分利用 Windows 硬件兼容性计划(之前称为硬件认证计划)。通过某些测试后,该计划允许你将 Windows 徽标用作市场营销的一部分。
首先是两个需求:
1、公司的EV数字签名(进行Windows驱动中心账户申请,对驱动程序、HLK测试结果进行数字签名),需购买
2、Windows驱动开发账户
注册:https://developer.microsoft.com/zh-cn/dashboard/hardware
HLK测试操作步骤:(下述操作为为微软官方技术的翻译文档,现官方已有下述操作的中文文档)
https://msdn.microsoft.com/zh-cn/library/windows/hardware/dn915002(v=vs.85).aspx
Windows HLK Prerequisites
Warning:
The Windows Hardware Lab Kit (HLK) should only be installed on machines that are dedicated solely for testing purposes. Do not install any HLK component on a machine that is outside of a dedicated testing environment.
HKL只能安装在专门用于测试目的机器。专门的测试环境以外的机器不要安装HLK任何组件。
Important:
Controller 安装需要.net4.5,否则会安装失败。
不支持32位的SQL Server,若安装,在安装HLK之前请卸载。
不支持SQL Sever2014,若安装,在安装HLK之前请卸载。
Windows HLK 包含两个部分:一个HLK测试服务器,一个或多个测试系统
HLK test server. 也被称为控制器,测试服务器有两部分构成:Windwos HLK Controller和Windows HLK Studio. Controller软件是管理测试程序在测试系统中运行的引擎。Studio软件允许你选择安排任何测试系统的测试连接到测试服务器。Controller和Studio通过Windows HLK安装。安装后,测试服务器包含单独的安装程序来安装一个远程Windows HLK工作室和HLK客户机。
Test system. 也称为客户端计算机,每个测试系统可以有不同的配置,适合不同的测试场景,包括不同的硬件,操作系统,服务包,和驱动。每个测试系统可以只有一个测试服务器相关联。您可以配置每个测试系统通过运行Windows HLK客户端软件安装程序直接从测试服务器上共享的网络位置。
Deployment scenarios:
Windows HLK 有两个部署方案:
Domain-joined environment. 在domain-joined环境中,存在一个域控制器使根据Windows HLK特性设计的所有电脑加入到相同的域控制器。如果你计划部署Windows HLK domain-joined环境中,你需要一个至少三个电脑:Windows域控制器,Windows HLK测试服务器,和至少一个Windows HLK测试系统。确保Microsoft Active Directory®配置和在域控制器上运行。你的域控制器和HLK测试服务器不能在同一个机器中。
Workgroup environment. 工作组环境没有域控制器。如果你计划部署Windows HLK工作组,你至少需要两台电脑:测试服务器和测试系统加入到同一个工作组。不要使用默认的管理员帐户。在这个配置中,您必须启用来宾帐户。
此外,考虑如何组织实验室资源最佳利用Windows HLK。您需要确定测试服务器的数量和测试系统连接到它们的数量。这些设备或系统的类型在一定程度上影响你想要测试的决定。
测试系统和过滤驱动,你需要至少一个测试服务器和一个测试系统。
为了测试外部设备,你需要至少一个测试服务器,一个测试系统和外部设备进行测试。
如果你想要更少的开销管理控制器和客户,你可以选择分配更少的控制器,每个都有多个客户端连接到他们。最多允许150个客户端连接到一个控制器。还可以分配更多的控制器和更少的客户连接到它们。这允许将任何给定控制器响应更快,因为它有更少的客户沟通。有关更多信息,请参见HLK Controller and Client Organization。
系统要求:
Test server:
注:括号内为最低配置
处理器:多核处理器或多个x64-based以x64模式运行2.0 GHz或更快的速度。(单核的英特尔或AMD-based x64平台2.0 GHz的速度)
内存:4GB(2GB)
硬盘:RAID盘阵(300GB)
网速:1Gbps(100Mbps)
操作系统:(英语语言和英语本地版本的Windows Server 2008 R2 64位服务包(SP1),Windows Server 2012、Windows Server 2012 R2。)
Test system:
注:下列为最低要求
处理器:你所安装系统推荐的处理器
内存:Refer to the recommended processor for the operating system that you install.
硬盘:300GB
网速:100Mbps
操作系统:
安装英语语言和英语的本地版本的Windows操作系统用于测试。
测试系统不支持在虚拟机或任何第三方程序环境。
如果你测试针对Windows“N”版,您还必须手动安装媒体功能包。
附件需求:
许多的测试要求测试系统重启——一般多于一次,已完成测试。所以,我们建议您:
配置测试系统从常规硬盘引导扇区的引导,而不是从外部设备、CD或DVD光盘引导。
对于工作组环境,您必须启用来宾帐户。
在每台计算机,创建一个新的用户帐户,并将它添加到管理员组。
在每台计算机,用您刚刚创建的用户登录管理员帐户并启用来宾帐户。
测试可能还需要:
HLK 过滤器
测试签名驱动程序
要求额外的源代码/ Readme文件来创建包。
Optional remote/standalone Windows HLK Studio
硬盘:300GB
网速:100Mbps
操作系统:Win 10, Win 8.1, Win 8, Win 7
Step 1: 在测试服务器上安装Controller 和 Studio
这一步,你将在指定的测试服务器上安装HLK软件。安装程序安装Windows HLK控制器和工作室外,还有其他的资源。
Warning:
Windows硬件实验室工具包只应安装在专门用于测试目的的机器上。Do not install any HLK component on a machine that is outside of a dedicated testing environment.
Note:
测试服务器将预装Windows Server 2008 R2、Windows Server 2012,Windows Server 2012 R2或Windows Server 2016。
Important:
如果你升级你的HLK环境到最新的版本,你必须先从测试服务器和任何连接的测试客户端卸载以前的版本的HCK或HLK软件。
安装Windows HLK,如下步骤:
1、下载HLK
如果你直接下载到你的服务器,你必须禁用IE增强的安全配置(即ESC)。
2、当下载提示时,选择运行选项。
不要选择保存选项。保存选项只下载安装文件,而不是完整的工具包。
3、当在屏幕上出现指定位置时,选择适当的选项:
安装选项-选择将Windows硬件实验室套件安装到这台计算机上,然后选择安装。
下载选项-选择下载Windows硬件实验室工具包安装在一台单独的计算机上,然后选择下一个。
4、选择Windows硬件实验室工具包——控制器+ Studio选项。
如果您正在直接安装,则必须在服务器上打开一个端口。选择“是”,允许安装打开一个端口。
5、当加入客户体验改善计划(CEIP)屏幕出现,选择是或否,然后选择“下一步”。
如果你的网络没有连接到互联网,选择NO。
6、检查许可协议,然后选择接受继续。
安装大约需要45分钟。
如果微软.NET Framework 4.5尚未安装在计算机上,请按照提示安装它。计算机重新启动后,必须重复步骤1的安装说明,以便安装到这台计算机上。
如果选择了下载选项,请将下载复制到测试服务器。运行 HLKSetup.exe和重复安装说明步骤3安装到这台计算机。
Step 2: 在测试系统中安装客服端
你安装的Windows硬件实验室工具包(Windows HLK)在测试服务器上,您可以添加测试系统环境。你必须在每个测试系统安装Windows的HLK客户端软件。Windows的HLK客户端软件存储在Windows的HLK测试服务器。
Warning:
如果你正在测试软件,一定要在测试系统中首先安装产品,然后安装Windows的HLK客户端软件。
安装Windows的HLK客户端
1、在测试系统上,浏览到以下位置:
\\<ControllerName>\HLKInstall\Client\Setup.cmd.
使用测试服务器名称替换<ControllerName>
如果以下软件尚未安装,这一步安装中安装.NET Framework 4(客户端配置和扩展),应用程序验证程序,Windows驱动程序测试框架(wdtf),和Windows性能工具包(WPT)。
如果测试系统具有服务器核心安装,那么你应该安装HLK客户端使用静默安装选项:
\\<HLKController>\HLKInstall\Client\Setup.cmd /qn ICFAGREE=Yes
2、Windows硬件实验室工具包客户端设置向导出现。启动向导,选择“下一步”。
3、在Internet连接防火墙协议页上,选择“是”,允许打开一个端口,然后选择下一个。
如果没有出现Internet连接防火墙协议页,则没有安装Windows防火墙,或在计算机上安装另一个软件防火墙或硬件防火墙。如果安装了另一个防火墙,则必须手动打开TCP端口1771以进行安装。请参考防火墙产品附带的指示,手动打开TCP端口。如果没有打开端口1771,安装可能失败,客户端软件可能无法正常运行。
4、当准备安装页面出现时,选择安装。
5、选择完成退出安装向导
当安装完成,进入控制面板,选择卸载程序证实其成功。Windows硬件实验室工具应出现在程序客户列表。
6、每个测试系统重复步骤1~5
Step 3: 创建一个机器池
机器池是一个或多个测试系统的逻辑分组。你在每个测试系统安装Windows的HLK客户端后,电脑会自动添加到默认打印机池。在使用测试系统之前,必须将其移动到工作机器池中。
每个项目都需要机器池。机器池可以用于多个项目。一个项目可以引用多机池。
下图显示了Studio配置页。
创建一个机器池:
1、在Windows HLK Studio中,选择配置。
2、选择一个现有的机器池,然后选择创建机器池。或者,您可以右键单击现有的机器池,然后选择“创建机器池”。
3、选择默认池,并确认每个测试系统都出现在右侧的主窗格中。如果已经在多个测试系统上安装了客户机,则可以将它们添加到池中。
注意,计算机一次只能在一个池中。
4、通过先选择测试系统,然后将其拖到新创建的池中,从而将测试系统移动到新池中。
5、在右边的窗格中,右键单击“机器”列下的测试系统,选择“更改机器状态”,然后选择“就绪”。
状态栏变化为Ready。
警告你不能安排具有NotReady状态计算机的测试。
警告计算机不能在默认池中设置为就绪。
6、对在池中包含的每个测试系统重复前面的两个步骤。
7、一旦你在设备池中添加了所有所需的测试系统,选择返回箭头回到Windows HLK Studio的主区域。
在所有测试系统都放置在一个池中之后,您就可以对这些计算机进行测试了。
了解更多关于此页包括分布式和多设备支持不同的选项,看HLK工作室配置页。
Step 4: 创建一个项目
安装测试服务器和客户机之后,就可以创建项目了。项目定义了您想要测试的内容。最常见的项目对应于您希望提交认证的设备。
您可以创建代表多种场景的大型项目。您还可以创建几个较小的项目,并将结果合并到一个包中。
在剩下的示例中,您为一个设备创建一个项目并运行所有相关的证书测试。然后,创建一个包含提交所有测试结果的包。
下图显示了Studio项目选项卡。
创建一个项目:
1、在Windows HLK Studio中,在项目选项卡中选择创建项目。
2、用你的项目名替换默认项目名,然后按Enter键。
注意一个项目应该有一个有意义的名称,显示其内容,例如,“Fabrikam Multi-function Device Model Z”。
当项目名称出现在页面上时,就创建了项目。
右窗格显示项目的详细信息。一旦您开始测试设备,就会显示更多信息。您可以通过加载和引用这个窗格来检查任何项目的状态。
要了解更多关于这个页面,看到HLK工作室项目”选项卡。
Step 5: 选择测试的目标
Windows的HLK工作室可检测设备工具的所有的功能。单个可测试的特性称为目标。设备可以包含多个目标,由一个或多个硬件id表示。在“选择”选项卡上,可以使用以下视图筛选您想要测试的内容:
Systems: 用于测试完整客户机或服务器系统。
Devices and printers: 用于测试连接到测试系统的外部设备。此设备通常出现在测试系统的启动>设备和打印机上。
Device manager: 用于测试测试系统或外部设备的组件,例如网卡。这是最详细的视图。
Software device: 用于测试安装在测试系统上的过滤器驱动程序、防火墙和防病毒软件。
注意一些软件驱动程序与物理设备相关联。如果您在软件设备视图中找不到您的驱动程序,请使用“设备管理器”视图中的搜索栏来查找您的软件驱动程序关联的设备。
下图显示了Studio选择选项卡:
选择一个测试目标:
1、在Windows的HLK工作室,选择“选项”选项卡。在“机器池”下拉菜单中,选择包含要测试的设备的池。
2、在左侧窗格中,基于要测试的设备选择视图:系统、设备和打印机、设备管理器或软件设备。
在中心窗格中显示可用目标列表。如果选择“设备管理器”视图,则可以选择显示收件箱和隐藏的功能。
3、在中心窗格中,选中要测试的每个目标旁边的方框。
注意,您必须为某个设备选择特定产品类型的所有特性以获得认证。
注意:如果你的设备上测试Web服务(WSD)的设备,有可能是上市前所需的WSD目标延迟。
左窗格中的“显示选定”视图显示了您在所有视图中选择的目标。这个视图允许你看到的只是你的测试。还可以通过使用类别列表过滤类别的机器池。您可以使用搜索框搜索特定的目标和特性。
要了解更多关于此页的不同选项查看HLK工作室”选择”选项卡。
Step 6: 选择和运行测试
“测试”选项卡显示与设备上的功能相关联的所有测试。你可以通过以下方式过滤和排序测试列表:
测试阶段分类
· Bring Up
· Development and Integration
· Reliability
· Tuning and Validation
· Manufacturing
· Support
现状
试验名称
类型(手动、非分布式、特殊配置、多机)
注意,您可以用鼠标悬停在测试类型图标上以获得关于测试类型的更多信息。
注意需要用户输入的手动测试可以中断测试过程。我们建议您分别从自动化测试运行手动测试。
注意一些测试运行前需要额外的输入。Windows的HLK工作室提示您需要更多的信息。
下面的图像显示的工作室测试标签。
播放列表:
播放列表是一组测试,可以用来定义测试设备的各种场景。Windows硬件兼容性程序使用一个正式的播放列表来确定哪些设备符合Windows 10的兼容性要求。
可以通过在测试选项卡中选择加载播放列表来加载播放列表。你可以在一个时间只有一个播放列表加载。要选择不同的播放列表,必须先从测试选项卡中选择卸载播放列表,然后卸载当前播放列表。
下图显示加载播放列表文件对话框。
加载一个播放列表后,只在UI中显示适用于每个目标的测试。
针对特定目标的所有播放列表的测试结果一直保持到目标被从项目中移除为止。加载一个播放列表时,任何先前对该播放列表的测试结果也被加载。
通过选择“保存”作为播放列表,可以将现有的测试集合保存为播放列表。
在使用正式播放列表时,您必须使用与您正在使用的套件版本匹配的播放列表的版本。例如,如果使用1607版的HLK,你也必须使用1607版的播放列表。
运行测试:
注意,如果使用播放列表,请务必在执行以下步骤之前加载它。
1、使用下拉列表中的视图过滤测试结果。
2、选中要运行的每个测试旁边的复选框。
3、运行选定的测试
如果任何额外的输入时,Windows HLK工作室会提示你。
出现一个进度条。当你运行一个测试,会发生一个轻微的延迟。
注意要了解更多关于任何测试的内容,请从列表中选择测试并按F1键或右键单击并选择测试说明。若要取消任何运行测试,请右键单击并选择取消。
当测试完成时,结果将显示在状态列中。一个绿色的对号意味着它通过,而红色X意味着失败。右边的窗格显示项目摘要信息,包括选定的目标、正在测试的操作系统、符合资格的产品类型以及所有测试的状态。
了解更多关于此页的不同选项,查看HLK工作室-测试”选项卡。
Step 7: 查看测试结果和日志文件
结果选项卡显示关于每个测试的详细信息。当每个测试完成时,状态列通过结果传递或失败更新。
下面的图像显示的工作室结果标签。
失败测试的故障处理:
如果测试失败,您可以展开测试细节来检查相关联的日志文件。
1、从列表中选择一个失败的测试,由红色X或系统崩溃图标指示。
2、展开“测试名称”节点,展开“日志”节点,然后双击日志文件。
你可以查看这些日志文件:
1、.log file,文本转储。
2、.wtl file,打开查看错误报告。
3、.xml file,更改文件扩展名.WTL查看错误报告。
右键单击任何测试看额外测试的细节,包括:
系统崩溃,在测试过程中发生故障检验汇总信息
任务日志
附加文件
应用过滤器
错误
基础设施(收集和执行日志)
了解更多关于此页的不同选项,包括分布式和多设备支持,查看HLK工作室-结果”选项卡。
导出失败的HLK作业:
你现在可以导出一个失败的作业并在没有HLK安装客户端的机器重新运行它。更多信息,见导出失败的HLK作业。
Step 8: 创建一个提交包
注意,我们强烈鼓励您将驱动程序符号作为提交包创建的一部分。包括符号使微软能够识别与驱动程序相关的根源问题。
该设备通过所有必要的测试之后,您可以创建一个提交包(.hlkx提交文件)。
Windows的HLK工作室支持包的创造,所以你不需要使用一个单独的提交工具。它支持添加资源文件(驱动、符号、勘误表)完成认证。你也可以合并多个包(.hlkx文件)到一个单一的包。
下面的图像显示的HLK工作室提交包标签。
创建一个提交包:
1、选择Package标签。
2、如果您为设备使用了特殊的驱动程序(可选),请如下提交:
a) 单击“添加驱动程序文件夹”>“浏览”选择文件夹,然后单击“确定”。
b) 在“驱动程序属性”对话框中,选择适当的产品和区域设置,然后单击“确定”。
重要的是默认的区域设置只使用英语。如果要添加其他区域设置,则必须现在添加。创建驱动程序包后,无法更改区域设置。
3、若要添加符号(可选),请右键单击驱动程序文件夹,单击“添加符号>浏览”以选择文件夹,然后单击“确定”。
4、添加一个附加的文件夹(可选),如自述文件,应急信息、勘误,或手动过滤器,点击添加添加文件夹>浏览选择文件夹,然后单击“确定”。
5、单击创建包。
6、从“签名选项”对话框中,选择其中一个选项:
重要提示:
所有投稿必须经过数字签名。
从Windows 10开始,您还必须包含一个EV(扩展验证)代码签名证书。
Do not sign:
创建一个未签名的包,例如,发送到支持调试或稍后与其他包合并到单个提交包中。
Use the certificate store:
创建一个数字签名的包,这是最常见的场景。此选项需要X509证书例如VeriSign证书将安装在该计算机上运行的Windows HLK工作室。从“Windows安全性”对话框中,选择适当的代码签名证书。
Use a certificate file:
使用可移植安全文件创建数字签名包。此选项要求你X509证书文件(.cer文件)。
有关包的附加信息,请参见以下主题:
HLK工作室-包装标签
HLK与HSM签订
接下来的步骤:
恭喜你,你已经完成了端到端的测试您的设备使用Windows的HLK。提交签名包(.hlkx文件)通过对Windows开发中心硬件仪表板。有关更多详细信息,请参见Windows开发中心中的仪表板帮助。
注意事项:
1、按上述步骤可完成WHQL认证,部分注意项如下:
2、服务器必须使用英文版系统(否则服务器软件安装不成功),客户端并不需要英文版。服务器可以安装在虚拟机中,客户端必须使用真机。(服务器、客户机系统安装后不需做其他操作,安装HLK Studio会自动配置所需环境)
3、WLK测试,只要保证驱动程序没有问题且与设备兼容,inf文件语法没有问题就可,并不考虑驱动程序厂家是谁,使用者是谁。(inf文件可使用infverif.exe工具测试)
4、测试任务需下载playlist,根据playlist的任务项,完成测试。
https://developer.microsoft.com/zh-cn/dashboard/hardware
5、测试失败,需要处理失败的选项。若使用第三方提供的驱动程序,尽量使用比较稳定的驱动程序。
6、完成测试后,通过HLK Studio打包测试结果、驱动程序。Studio 打包时会对hlkx文件进行数字签名,所以需要使用EV证书签名文件或EV证书Key。打包中的驱动程序也需要进行数学签名才能提交。
7、驱动程序数字签名需要与inf中的厂家保持一致。若使用的第三方的驱动程序且在inf中设置了自己的信息,需对.sys、动态库文件使用自己的EV证书签名,重新生成.cat文件,并签名。
8、在下列网站提交测试结果(当前Windows新的提交入口,20170922)
https://developer.microsoft.com/zh-cn/dashboard/hardware
9、创建项目时选择非通用Windows驱动选项(或根据实际情况选择)
10、提交后,半小时内会得到认证结果。成功后,下载Windows签名的驱动程序使用即可。
11、上述步骤微软官方现已提供中文版。(20170922)
https://msdn.microsoft.com/zh-cn/library/windows/hardware/dn915002(v=vs.85).aspx
以上文档只是本人对此次Windows HLQL认证(Win10)的技术整理,在操作的过程中或多或少的遇到了一些问题,但最终都解决,其中注意事项为本人在操作的过程中遇到的问题,现分享给大家。