Win10 HLK 静态工具徽标测试不支持CodeQL结果


前言

微软从Win7 x64系统开始对驱动程序强制要求驱动签名才能安装,否则安装时会弹出警告并且可能不能正常运行。虽然微软提供了禁用驱动强制签名的方法,但作为正式的Windows驱动开发流程,驱动认证是必不可少的路径。


一、问题

Win10 HLK要求提交的DVL包含代码分析工具(CA)和静态驱动程序验证程序(SDV)。Win11 HLK要求提交的DVL包含CodeQL、代码分析工具(CA)和静态驱动程序验证程序(SDV)。VS2019自带的工具生成的DVL文件包含了CodeQL结果部分,而且DVL文件带Checksum校验,不能简单的删除CodeQL结果后到HLK认证中提交。

从微软文档 Windows 硬件实验室工具包 可以得知大部分较新的Win10版本都会要求使用Win10 HLK 2004。

从微软文档 WDK 已知问题 #适用于 Windows 10 版本 2004 的 WDK 章节可以得知该版本WDK会导致生成 DVL 失败,出现 System.IO.FileNotFoundException,尝试创建驱动程序验证日志 (DVL) 时,将出现以下错误:

Unhandled Exception: System.IO.FileNotFoundException: 
Could not load file or assembly 
'System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 
or one of its dependencies. 
The system cannot find the file specified.

二、使用步骤

1.替换旧版本dvl.exe

其他 WDK 下载最接近Win10 WDK 2004的Win10 WDK 1903。在之前Win10 WDK 2004不同的安装目录下或者虚拟机里安装,然后提取安装目录\Windows Kits\10\Tools\dvl\dvl.exe文件,找到原来dvl.exe文件备份后替换旧版本。

2.手动创建驱动程序验证日志

不能直接使用VS2019中->扩展->Driver->Create Driver Verification Log…选项DVL文件,测试生成出来的DVL文件有包含CodeQL输出结果,VS2019中不确定是否使用了内置的程序生成DVL文件。

参考微软文档 创建驱动程序验证日志,可以使用下面代码生成DVL文件,测试该命令使用到的是Windows Kits\10\Tools\dvl目录下的dvl.exe工具,因此可以通过替换该文件夹下的dvl.exe来创建不包含CodeQL输出结果的DVL文件。

msbuild.exe <vcxprojectfile> /target:dvl /p:Configuration="Release" /P:Platform=x64

总结

驱动认证流程并不简单,涉及很多开发环境和目标平台差异,导致部分版本容易出现兼容问题,而微软对旧版本已经不再维护更新HLK工具,想要完成驱动认证需要自己解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值