静态驱动程序验证程序命令 (MSBuild)

可以在 Visual Studio 命令提示符 窗口中 (SDV) 运行静态驱动程序验证程序,方法是安装 Windows 驱动程序工具包 (WDK) ,也可以运行企业 Windows 驱动程序工具包 (EWDK) 。 导航到存储驱动程序项目文件或库项目文件的目录。 参数可以按任何顺序显示在命令行上。

注意

安装 WDK 后,SDV 集成到 Visual Studio 中,也可以通过“驱动程序”菜单从 IDE 运行。

msbuild /t:sdv /p:Inputs="Parameters" ProjectFile /p:Configuration=configuration /p:Platform=platform

必须选择发布配置 (例如 /p:Configuration=“Windows 7 Release”) 。 有关支持的发布配置列表,请参阅 生成驱动程序。 对于 x86) ,平台可以是 Win32 (,也可以是 x64 (,例如 /p:Platform=Win32) 。

注意

请务必检查计算机的电源管理计划,以确保计算机在分析期间不会进入睡眠状态。

参数

/扫描

扫描驱动程序的源代码以查找函数角色类型声明。 有关如何声明驱动程序提供的回调函数和调度例程的信息,请参阅 使用函数角色类型声明。 在此扫描期间,SDV 会尝试检测验证驱动程序所需的驱动程序入口点。 它将扫描结果记录在 Sdv-map.h 中,Sdv-map.h 是它在驱动程序的项目目录中创建的文件。

有关详细信息,请参阅 准备源代码

/检查:Rule | Rule,...

使用指定的规则 () 启动验证。 可以通过用逗号分隔每个规则来指定多个规则。 运行 /检查: 命令,并指定驱动程序的 Visual Studio 项目文件 (*.vcxproj) 。

规则 是一个 规则 的名称或包含通配符的规则名称模式, (*) 表示一个或多个字符。 单独使用时,通配符 (*) 表示所有规则。

/检查:RuleList.sdv

使用指定规则列表文件中的规则启动验证。 只能列出一个包含此参数的文件。 在规则列表文件中,每行可以是一个规则的名称,也可以是表示所有 SDV 规则 (*) 的通配符。 运行 /检查:RuleList.sdv 命令, (*.vcxproj) 指定驱动程序的 Visual Studio 项目文件。

RuleList.sdv规则列表文件的完全限定路径和文件名。 文件必须具有 .sdv 文件扩展名。 除非文件位于本地目录中,否则路径是必需的。 如果路径或文件名包含空格,则必须将 RuleList 括起来。用引号表示的 sdv

如果在未指定规则的情况下指定 /检查: 选项,则 SDV 使用驱动程序模型的默认规则集运行。

/自由

处理当前目录中的库。 SDV 调用 MSBuild.exe 来编译和生成库以供外部使用,并生成在驱动程序验证中包含库所需的文件。

在验证需要库的驱动程序之前,请使用此参数。 运行 msbuild /t:sdv /p:Inputs=“/lib” 命令,并为库指定 Visual Studio 项目文件 (*.vcxproj) 。

有关 /lib 参数的使用和效果的详细信息,请参阅 静态驱动程序验证程序中的库处理

/视图

打开静态驱动程序验证程序。 运行 /view 命令并指定驱动程序的 Visual Studio 项目文件 (*.vcxproj) 。

验证完成后,结果将立即可用,并一直可用,直到使用 /clean 命令从驱动程序的项目目录中删除 SDV 文件。

/清洁

从目录中删除 SDV 文件。 由于这些文件用于生成静态驱动程序验证程序报告显示, 因此/clean 命令还会删除验证报告。

运行 /clean 命令并为驱动程序或库指定 Visual Studio 项目文件 (*.vcxproj) 。 命令仅删除指定项目的 SDV 文件。

在每次验证之前,为驱动程序项目运行 /clean 命令。

当库文件已过时(例如库代码更改时)时,为库运行 /clean 命令。

如果在 Sdv-map.h 文件中将批准的标志设置为 true, 则 /clean 命令不会删除 Sdv-map.h 文件, (Approved=true) 。 然后,SDV 可以使用此文件进行将来的验证。

/?

显示 SDV 命令的使用情况。 使用此参数的命令不必在生成环境窗口中运行。

注释

在不带参数的情况下运行 msbuild /t:/sdv p:/Inputs= /? 会显示 SDV 命令的使用情况。

/clean 命令删除 SDV 用于创建静态驱动程序验证程序报告显示进行验证的文件。 运行此命令后,用于验证的静态驱动程序验证程序报告显示不再可用。

示例

若要对 mydriver 项目的本地目录中的驱动程序文件使用所有规则运行 SDV,请执行以下操作:

msbuild /t:sdv /p:Inputs="/check:*" mydriver.VcxProj /p:Configuration="Windows 7 Release"/p:Platform=Win32

若要在本地目录中的驱动程序文件上使用 CancelSpinLock 规则运行 SDV,请执行以下操作:

msbuild /t:sdv /p:Inputs="/check:CancelSpinLock" mydriver.VcxProj /p:Configuration="Windows 7 Release" /p:Platform=Win32

使用 D:\SDV 目录的 Rules1.sdv 规则列表文件中指定的规则运行 SDV:

msbuild /t:sdv /p:Inputs="/check:D:\SDV\Rules1.sdv" mydriver.VcxProj /p:Configuration="Windows 7 Release" /p:Platform=Win32

若要再次运行 SDV,这次使用 /clean 选项:

msbuild /t:sdv /p:Inputs="/clean" mydriver.VcxProj /p:Configuration="Windows 7 Release"/p:Platform=Win32

若要显示静态驱动程序验证程序,以便可以在本地目录中查看驱动程序的最新验证结果,请执行以下操作:

msbuild /t:sdv /p:Inputs="/view" mydriver.VcxProj /p:Configuration="Windows 7 Release" /p:Platform=Win32

使用静态驱动程序验证程序查找 Windows 驱动程序中的缺陷