如何创建驱动程序验证日志

Windows 硬件认证计划要求驱动程序提交驱动程序验证日志 (DVL)。 DVL 包含静态分析工具 CodeQL 的结果摘要。 DVL 不包含任何源代码信息。 在为驱动程序创建 DVL 之前,请运行 CodeQL、代码分析工具和静态驱动程序验证程序。 有关更多信息,请参阅静态工具徽标测试和CodeQL 和静态工具徽标测试

准备驱动程序

  1. 在运行代码分析工具之前,请使用最新的 Windows 驱动程序工具包 (WDK) 生成并链接驱动程序。
  2. 为解决方案配置选择发布,为解决方案平台选择 x64

确定并运行所需的测试

若要确定要认证的 Windows 版本需要哪些测试,请参阅静态工具徽标测试

根据需要运行以下测试。

创建驱动程序验证日志

  1. 驱动程序菜单中,选择创建驱动程序验证日志
  2. 确认检测到代码分析日志静态驱动程序验证程序日志CodeQL 日志文件。
  3. 选择创建

驱动程序验证日志的文件扩展名为 .DVL.XML。 日志在项目文件夹中创建,例如,\myDriverProject\myDriverName.DVL.XML

SDV 对驱动程序进行彻底重建,从而删除代码分析日志。 因此,在运行 CA 之前,请务必运行 SDV。

当你准备使用 Windows Hardware Lab Kit 测试驱动程序时,请将驱动程序验证日志复制到测试计算机上的 %systemdrive%\DVL 目录。 在复制新驱动程序验证日志之前,删除测试计算机上该目录中的内容。

重要

认证提交可以接受 DVL 文件出现超时、加宽行距和其他未成功结果。 未成功的结果不会导致 HLK 中的静态工具测试失败。

使用 Visual Studio 命令提示符窗口

还可以从 Visual Studio 命令提示符窗口创建驱动程序验证日志。 使用随 Visual Studio 安装的 Visual Studio 本机工具命令提示符或企业版 Windows 驱动程序工具包 (WDK)。

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

在 msbuild 或 Visual Studio 之外创建驱动程序验证日志

Microsoft 随附 Windows 驱动程序工具包 (WDK)Enterprise WDK (eWDK) 提供一种名为 dvl.exe 的组件,它可用于通过命令行生成驱动程序验证日志 (DVL)。 从 WDK/eWDK 预览版 21342 及更高版本开始,可以从 msbuild 或 Visual Studio 上下文之外的命令行生成 DVL。

从 CodeQL sarif 文件生成 DVL

  1. 从 WDK 或装载的 eWDK 中查找 dvl.exe。 它通常安装在 C:\Program Files (x86)\Windows Kits\10\Tools\dvl\dvl.exe
  2. 通过传递 /manualCreate 标志、驱动程序名称、所需的体系结构和 /sarifPath 来调用 dvl.exe。 其中 /sarifPath 包括包含 sarif 文件的文件夹的路径。
"C:\Program Files (x86)\Windows Kits\10\Tools\dvl\dvl.exe" /manualCreate <driverName> <driverArchitecture> /sarifPath <pathToSarifLocation>

从 CodeQL sarif 文件生成 DVL,或者在使用 CA 和 SDV 时生成

  1. 将创建 DVL 所需的结果与任何 vcxproj 文件一起放在一个目录中。 对于要针对 Windows 客户端进行认证的驱动程序,此文件是 CodeQL SARIF 文件。 Windows Server 认证还可能包括代码分析和静态驱动程序验证程序 (SDV) 结果文件。 请查看 WHCP 要求文档,具体详细了解需要运行哪些工具来进行设备驱动程序认证。

  2. 将 CodeQL SARIF 文件和代码分析 XML 文件放在目录的顶层。 将 SDV DVL.xml 文件放置在名为 sdv 的子文件夹中。

  3. 从命令行导航到包含 CodeQL SARIF 文件的顶级目录。

  4. 从 WDK 或装载的 eWDK 中查找 dvl.exe。

  5. 通过传递 /manualCreate 标志、驱动程序名称和所需的体系结构来调用 dvl.exe。 例如:

    driverArchitecture 使用以下字符串之一:

    • X86
    • X64
    • Arm
    • ARM64

    注意

    不要将".sys"作为 driverName 字符串的一部分。

  6. 检查 DVL 以确保其正确生成。

此用法主要用于生成带有 CodeQL 结果的 DVL,但也可用于 SDV 和 CA 结果。

发行说明

有关代码分析工具、静态驱动程序验证程序和驱动程序验证日志的最新信息,请参阅 Windows 驱动程序工具包 (WDK) 下载页面上的 WDK 发行说明。