静态驱动程序验证程序

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

重要

Windows 硬件兼容性计划需要 CodeQL 进行客户端和服务器操作系统上的静态工具徽标 (STL) 测试。 我们将继续在旧版产品上维护对 SDV 和 CA 的支持。 强烈建议合作伙伴查看静态工具徽标测试的 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 可以验证的驱动程序的特定信息,请参阅 支持的驱动程序

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