静态驱动程序验证程序
静态驱动程序验证程序(也称为“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++ 可再发行程序包 包才能运行。 参阅以下内容:
- Visual Studio 2019 Redistribution
- 适用于 Visual Studio 2017 的Visual C++ 可再发行程序包包
- Visual C++ Redistributable Packages for Visual Studio 2013
对于适用于 Windows 10 版本 1809 或更高版本的 WDK 中提供的 SDV 版本,应安装适用于 Visual Studio 2012 的 Visual C++ 可再发行程序包 包,而不是 2017 包。
Visual Studio 集成
静态驱动程序验证程序集成到 Visual Studio 中。 可以在 Visual Studio 驱动程序项目中运行静态分析。 可以从 Visual Studio 中的 “驱动程序 ”菜单启动、配置和控制静态驱动程序验证程序。
静态驱动程序验证程序文档
- 静态驱动程序验证程序已知问题:列出静态驱动程序验证程序的最新已知问题
- 使用静态驱动程序验证程序在驱动程序中查找缺陷:告知开始在 Visual Studio 环境中分析驱动程序代码所需的内容。
- 静态驱动程序验证程序命令(MSBuild):列出用于在 Visual Studio 命令提示符窗口中运行 SDV 的 MSBuild 命令。
- 静态驱动程序验证程序简介:提供静态分析工具的概述。
- 使用静态驱动程序验证程序:提供有关使用和配置静态分析工具的详细信息。
- 静态驱动程序验证程序报告:描述显示静态代码分析的详细跟踪的查看器。
- 静态驱动程序验证程序规则:规则定义驱动程序模型与操作系统内核接口之间正确交互的要求。
- 静态驱动程序验证程序参考:提供有关函数角色类型、SDV 配置文件、错误和警告消息的参考信息。
在 Windows 驱动程序代码中查找 Bug
Microsoft使用 SDV 测试Microsoft Windows 操作系统随附的内核模式驱动程序,并测试 WDK 中的示例驱动程序。 通过使用特定驱动程序模型的 DDI 符合性规则,SDV 可以验证正确的驱动程序行为。 例如,SDV 可以验证驱动程序:
- 在正确的 IRQL 中调用函数
- 按正确的顺序获取和释放锁
- 正确使用处理 I/O 请求数据包的函数(IRP)
SDV 通过驱动程序代码检查所有可能的路径。 它旨在查找模糊路径中的严重错误,即使在彻底测试中也不太可能遇到这些错误。
其他资源
有关 SDV 可以验证的驱动程序的特定信息,请参阅 支持的驱动程序
有关使用静态驱动程序验证程序的详细信息和提示,请参阅以下内容: