静态驱动程序验证程序

静态驱动程序验证程序(也称为“StaticDV”或“SDV”)是一种静态验证工具,可以系统地分析 Windows 内核模式驱动程序的源代码。 SDV 是一种编译时工具,能够发现驱动程序中的缺陷和设计问题。 根据一组接口规则和操作系统模型,SDV 确定驱动程序是否与 Windows 操作系统内核正确交互。

重要

不再支持 SDV,并且 Windows 24H2 WDK 或 EWDK 版本中不提供 SDV。 它在版本 26017 之前的 WDK 中不可用,并且不包括在 Windows 24H2 RTM WDK 中。 通过从 下载 Windows 驱动程序工具包(WDK)下载 Windows 11 版本 22H2 EWDK(2023 年 10 月 24 日发布)和 Visual Studio 生成工具 17.1.5,仍可使用 SDV。 建议仅使用企业 WDK 运行 SDV。 不建议将旧版标准 WDK 与 Visual Studio 的最新版本结合使用,因为这可能会导致分析失败。
今后,CodeQL 将成为驱动程序的主要静态分析工具。 CodeQL 提供了一种功能强大的查询语言,可将代码视为要查询的数据库,使编写特定行为、模式等查询变得简单。 有关使用 CodeQL 的详细信息,请参阅 CodeQL 和静态工具徽标测试

安装静态驱动程序验证程序

静态驱动程序验证程序在完整的 WDK 体验和独立企业 WDK 中作为 Windows 驱动程序工具包(WDK)的一部分提供。 此外,SDV 需要用于 Visual Studio 的 Visual C++ 可再发行程序包 包才能运行。 参阅以下内容:

对于适用于 Windows 10 版本 1809 或更高版本的 WDK 中提供的 SDV 版本,应安装适用于 Visual Studio 2012 的 Visual C++ 可再发行程序包 包,而不是 2017 包。

Visual Studio 集成

静态驱动程序验证程序集成到 Visual Studio 中。 可以在 Visual Studio 驱动程序项目中运行静态分析。 可以从 Visual Studio 中的 “驱动程序 ”菜单启动、配置和控制静态驱动程序验证程序。

静态驱动程序验证程序文档

在 Windows 驱动程序代码中查找 Bug

Microsoft使用 SDV 测试Microsoft Windows 操作系统随附的内核模式驱动程序,并测试 WDK 中的示例驱动程序。 通过使用特定驱动程序模型的 DDI 符合性规则,SDV 可以验证正确的驱动程序行为。 例如,SDV 可以验证驱动程序:

  • 在正确的 IRQL 中调用函数
  • 按正确的顺序获取和释放锁
  • 正确使用处理 I/O 请求数据包的函数(IRP)

SDV 通过驱动程序代码检查所有可能的路径。 它旨在查找模糊路径中的严重错误,即使在彻底测试中也不太可能遇到这些错误。

其他资源

有关 SDV 可以验证的驱动程序的特定信息,请参阅 支持的驱动程序

有关使用静态驱动程序验证程序的详细信息和提示,请参阅以下内容: