Windows 硬件兼容性程序的 CodeQL 常见问题解答

本文解答了有关 Windows 硬件兼容性计划的 CodeQL 测试要求的常见问题。 了解 CodeQL 如何改进驱动程序认证并确保高安全标准。

何时需要 CodeQL 进行设备认证?

有关要求详细信息,请参阅 Windows 硬件兼容性计划认证过程

为什么驱动程序源代码需要 CodeQL?

在驱动程序源代码上要求 CodeQL 的动机基于两个主要原因:

  1. 通过确保经Microsoft认证的组件满足高安全标准来提高 Windows 安全性。

  2. 为硬件生态系统提供Microsoft安全工程师积极开发的高质量工具。

CodeQL 和静态工具徽标测试适用于哪些类型的驱动程序?

目前,静态工具徽标测试需要运行 CodeQL 并传递所有内核模式驱动程序(图形驱动程序除外)的 必修复 查询集。

强烈建议在图形驱动程序上运行 CodeQL,即使当前不需要。 某些查询还可以识别用户模式组件中的有用缺陷。

哪个许可证控制驱动程序开发人员 CodeQL 的使用?

硬件 实验室工具包(HLK) 最终用户许可协议允许使用 CodeQL 进行 WHCP 测试。

对于 WHCP 参与者,HLK 的 EULA 覆盖 GitHub 的 CodeQL 条款和条件。 HLK EULA 指出,CodeQL 可以在自动化分析、CI 或 CD 期间 用作 正常工程过程的一部分,目的在于分析那些要提交并认证为 WHCP 的一部分的驱动程序。

是否需要使用 Visual Studio 或 msbuild 来运行 CodeQL?

CodeQL 不需要使用 MSBuild 或 Visual Studio

有关支持哪些编译器的列表,请参阅 支持的语言和框架

HLK 如何验证我的驱动程序是否已被 CodeQL 扫描?

HLK 中的静态工具徽标测试是强制实施此要求的测试。

有关静态工具徽标测试的详细信息,可在其 MS Docs 页面上找到。

CodeQL 报告的缺陷都是真实的缺陷吗?

每个 CodeQL 查询都具有不同的精度级别。

我们的目标是尽量减少误判,但偶尔会发生误判。 我们的 必须修复 查询项套件是经过开发并精心挑选用于 WHCP 程序,因为我们广泛测试的结果几乎没有误报。

如果在 “必须修复 ”查询集中的查询中看到误报,请立即发送电子邮件 stlogohelp@microsoft.com 或在 Windows-Driver-Developer-Supplemental-Tools 存储库上提出问题,我们将尽快解决此问题。

对于静态工具徽标测试,查询的“警告”或“错误”分类是否很重要?

CodeQL 将查询分类为 错误警告问题,但此分类与 Windows 硬件兼容性计划和静态工具徽标测试对结果进行评分的方式不同。

任何存在缺陷的驱动程序在必须修复查询中都不会通过静态工具徽标测试,并且认证失败,而不考虑查询分类(例如 警告)。

是否可以在 Visual Studio 解决方案上生成 DVL?

否,DVL 生成必须在项目级别运行,并且不能在 Visual Studio 解决方案上运行。

有关生成 DVL 的完整说明,请参阅 创建驱动程序验证日志

是否可以在 msbuild 或 Visual Studio 的上下文之外生成驱动程序验证日志(DVL) ?

作为 Windows 驱动程序工具包(WDK)和企业 WDK(eWDK)的一部分,Microsoft附带一个名为 dvl.exe 的组件,可用于生成驱动程序验证日志(DVL)。

在 WDK/eWDK 预览版 21342 及更高版本中,可以通过指定驱动程序名称和体系结构,从命令行生成 DVL,而无需使用 msbuild 或 Visual Studio。

有关更多详细信息 ,请参阅“创建驱动程序验证日志 ”。

我有关于如何在驱动程序上使用 CodeQL 的评论或问题,我在哪里发送反馈?

将反馈和问题发送给 stlogohelp@microsoft.com