当前位置:   article > 正文

微软驱动HLK数字签名认证-非常详细_微软hlk认证

微软hlk认证

windows驱动想要在非测试模式下安装,需要通过微软的数字签名认证,认证的前期准备网上有很多文章。

经过两个月的 环境搭建,bug修改,测试认证,终于通过了微软官方的认证。

1 HLK环境部署:

1.1 如果是使用VHLK官方配置好的Hyper-v虚拟机测试,注意不要将虚拟机安装在测试系统(目标机)上,因为开启Hyper-v后物理机的混合睡眠无法支持,测试睡眠唤醒case可能会失败。VHLK下载速度非常慢,且很大概率下载失败,建议使用物理机当测试服务器。

1.2 可以在启用关闭功能中,打开hyper-v所有功能;

运行Hyper-V管理器启动 server 2016 时出现Hyper-V虚拟机监控程序未运行问题解决办法:

管理员power-shell中执行:

bcdedit /set hypervisorlaunchtype auto

然后重启;

1.3 测试服务器上安装windows server 2016 英文版;

1.4 环境部署参考: Windows Hardware Lab Kit | Microsoft Learn

1.5 HLK服务器安装流程

在测试服务器上安装HLKSetup.exe,选择第一个:

1.6 HLK 客户端安装:

在测试系统上,浏览到以下位置:

\\<ControllerName>\HLKInstall\Client\Setup.cmd
(将 <ControllerName> 替换为测试服务器的名称WIN-8I52R015B4E或者ip地址可通过电脑--属性查看设备名称;

\\WIN-8I52R015B4E\HLKInstall\Client

\\192.168.11.22\HLKInstall\Client

查看到的共享文件,

客户端dos下执行echo %PROCESSOR_ARCHITECTURE% 查看测试系统架构,选择相应的setupxxx.exe安装。

安装完成后去控制面板--卸载程序下确认WHLK Client安装成功。

 

如下命令安装测试客户端 InstallWTTClient ,使用管理员权限,不要使用powershell。

\\WIN-8I52R015B4E\HLKInstall\CoreSystemClient\InstallWTTClient.cmd ICFAGREE:1

将打开一个防火墙端口以与 HLK 控制器进行通信

安装完成后,任务管理器下可以看到hlksvc正在运行。

2. HLK认证问题调试:

    1. KeWaitForSingleObject 蓝屏问题

官网文档描述如下:

下图是蓝屏后在客户端使用windbg 分析的dump文件,使用winDbg分析如下,根据Arg1 、Arg2提示可知timeout参数不为0,应该运行在APC级别下。现在运行在DISPATCH级别导致测试出死锁蓝屏问题。

注:使用Windows 10 内置的verifier诊断工具,可以在任何测试机上测出IRQL的问题,而不必使用HLK测试环境,verifier默认是关闭的。 如下运行verifier命令后在gui界面自定义测试选项,IRQL对应的是死锁检测测试项,下一步选择被测驱动,完成后重启,不用做任何操作,verifier将会自动扫描测驱动。

ApiValidator测试项

测试时可以在客户端打开DebugView,查看HLK测试的log如下,主要问题是KeGetCurrentIrql接口找不到。即使去掉KeGetCurrentIrql的调用,别的系统接口还是会有调用到,放弃该方法。

按照官网说法需要在VS下添加通用Api的依赖库:

C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64\OneCoreUAP.Lib

添加后我们的设备都识别不到,该方法弃用;

解决:

官网Q&A How to fix the ApiValidator issue (ApiValidation: Error: XXX.sys has unsupported API call to "ntoskrnl.exe!KeGetCurrentIrql") - Microsoft Q&A 

  • VS2022下的UniversalDDIs.xml :  (C:\Program Files (x86)\Windows Kits\10\build\10.0.22621.0\universalDDIs\x86)
  • 测试服务器下的amd64_UniversalDDIs.xml :  (C:\Program Files (x86)\Windows Kits\10\Hardware Lab Kit\Tests\amd64\ApiValidator\amd64_UniversalDDIs.xml)

直接修改测试服务器上的amd64_UniversalDDIs.xml文件,添加KeGetCurrentIrql接口使用,即可测试通过。

registered WDTF调试

Reinstall with IO before an after (开发和集成)

客户端下开启debugView 看到错误:   [4704] Error: WDTF_TARGET : "DriverSetup" is not a registered WDTF system interface name. Win32=2 - 系统找不到指定的文件。

解决:

客户端下执行:
C:\Program Files (x86)\Windows Kits\10\Testing\Runtimes\WDTF\RunTime\RegisterWDTF.exe

参考:"DriverSetup" is not a registered WDTF system interface name - Microsoft Q&A 

 3. 提交测试log

  1. 在Package界面点击Add Driver Folder,添加驱动目录。驱动目录包含的文件: .cat、 .inf、 .sys、device.dtb、boot-wapper.bin。
  2. 点击Create Package,签名选择Use the certificate store,使用我们购买的代码签名证书进行签名。需要插入tocken,输入密码 xxxx。保存为.hlkx文件,后面提交会用到。

 4. 微软官网创建新硬件提交

a) 注册微软硬件开发账户,注册前先准备好EV证书,注册过程中会验证。

注册 Microsoft Windows 硬件开发人员计划 - Windows drivers | Microsoft Learn

b)提交.hlkx测试结果文件

创建新硬件提交 - Windows drivers | Microsoft Learn

当前测试的win10系统环境:

Win10 x64专业版 版本号:22H2

操作系统内部版本:19045.3930

Win10认证可以申请包含如下WHQL签名的版本:

 

 c)人工审核完成后,下载signed files在正常模式下安装验证。

测试中遇到的问题很多,在此记录一部分。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/833143
推荐阅读
相关标签
  

闽ICP备14008679号