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

你可以在“Visual Studio 命令提示符”窗口中运行静态驱动程序验证程序 (SDV)。导航到存储驱动程序的项目文件或库的项目文件的目录。参数可能在命令行上以任何顺序显示。

注意  SDV 以前是 Windows 驱动程序工具包 (WDK) 中的一个独立工具,但现在集成到 Visual Studio 中,可作为一个 MSBuild 目标运行,或者从 Visual Studio 中的“驱动程序”菜单运行。


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


必须选择一种发布配置(例如 /p:Configuration="Windows 7 Release")。对于受支持的发布配置的列表,请参阅构建一个驱动程序。平台可以是 Win32(针对 x86)或 x64(例如 /p:Platform=Win32)。

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

参数

/scan

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

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

/check:Rule | [Rule,……]

使用指定的规则开始验证。可以指定多条规则,只需将规则列表放在方括号中并以逗号分隔每个规则。运行 /check: 命令并指定驱动程序的 Visual Studio 项目文件 (*.vcxproj)。

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

/check:RuleList.sdv

使用指定的规则列表文件中的规则开始验证。使用此参数只能列出一个文件。在规则列表文件中,每一行可以是一条规则的名称,也可以是一个表示所有 SDV 规则的通配符 (*)。你还可以在规则名称中使用通配符 (*) 以表示任意一个或多个字符。运行 /check:RuleList.sdv 命令并指定驱动程序的 Visual Studio 项目文件 (*.vcxproj)。

RuleList.sdv 是一个规则列表文件的完全限定路径和文件名。该文件必须具有 .sdv 文件扩展名。除非该文件是本地目录,否则必须指定路径。如果路径或文件名中包含空格,必须将 RuleList.sdv 放在引号中。

如果指定 /check: 选项时没有指定一条规则,SDV 使用驱动程序模型的默认规则集运行。

/refine

如果 SDV 告诉你使用此选项,/refine 对你指定的一条或多条规则执行逐条验证。/refine 选项将验证流程分区为多个相关入口点分组。这允许 SDV 为更大的驱动程序生成有用的结果。 SDV 在与项目相同的目录中自动生成一个名为 Refine.sdv 的规则文件。 此文件包含可能会由于进一步验证而获益的那些规则。按照 SDV 在结果摘要中提供的指令继续执行分析。

/lib

处理当前目录中的库。SDV 调用 MSBuild.exe 来编译和构建用于外部用途的库,它生成将库包含在驱动程序验证中所需的文件。

先确认驱动程序需要该库,然后再使用此参数。运行 msbuild /t:sdv /p:Inputs="/lib" 命令并指定库的 Visual Studio 项目文件 (*.vcxproj)。

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

/view

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

验证完成后会立即得到结果,该结果会保留到你使用 /clean 命令从驱动程序的项目目录删除 SDV 文件为止。

/clean

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

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

在每次验证前针对一个驱动程序项目运行 /clean 命令。

在库文件过期时,如库代码更改时,针对库运行 /clean 命令。

如果 Sdv-map.h 文件中的 approved 标记设置为 true (Approved=true),/clean 命令不会删除 Sdv-map.h 文件。SDV 然后可将此文件用于以后的验证。

/cleanalllibs

删除 SDV 在计算机硬盘驱动器上的所有目录中创建的库处理文件。它不会影响驱动程序数据。

可以在构建环境窗口的任何目录中运行 /cleanalllibs 命令。

使用此参数删除 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

在本地目录中的驱动程序文件上使用所有以“lrql”开头的规则运行 SDV:

msbuild /t:sdv /p:Inputs="/check:Irql*" mydriverVcxProj /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

运行 SDV,使用 /refine 选项(如果 SDV 告诉你这么做)。

msbuild /t:sdv /p:Inputs="/refine" 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 驱动程序中的缺陷

 

 

显示:
© 2015 Microsoft