静态驱动程序验证错误消息

本部分介绍一些更频繁的 SDV 错误消息的含义,并建议解决它们的方法。

从 Visual Studio 启动 SDV 时,可能会看到以下错误:

  • SDV 仅在非调试配置上运行:如消息所示,SDV 必须在非调试配置上运行。 请确保将您的项目设置为“发布”配置,如果未设置,请创建一个,然后重新启动 SDV。
  • 加载可用规则时出错:SDV 找不到驱动程序模型的规则或无法正确确定驱动程序模型(如果驱动程序不是 WDM、KMDF、NDIS 或 Storport 驱动程序,则更有可能)。 如果 WDK 正确安装,则可以通过直接从命令行运行 SDV 来解决此问题(请参阅 静态驱动程序验证程序命令 (MSBuild) )。
  • SDV 无法清理驱动程序目录:在某些情况下,当你单击“清理”按钮时,权限错误可能会阻止 SDV 正确清理驱动程序目录中的旧结果。 如果以前运行的 sdv 文件被当前使用,也会发生此错误。 确保你的驱动程序目录中没有使用 SDV 文件,然后删除 sdv 和 sdv.temp 文件夹以及 staticdv.job 文件。

如果 SDV 在尝试分析时失败,它将把失败的阶段打印到标准输出。 从 Visual Studio GUI 运行 SDV 时,可以通过切换到“警报”选项卡来查看此输出。

SDV 可能失败的阶段包括:

  • NormalBuild:SDV 无法使用标准 MSBuild 命令生成驱动程序。 如果具有专用生成逻辑、依赖于项目文件中的解决方案元素或具有外部生成组件,则可能会出现这种情况。 如果项目依赖于 $(SolutionDir) 属性,则可以通过从命令行重新运行 SDV 并将其追加到命令行来直接提供此变量,方法是将 /p:SolutionDir=[your solution dir] 添加到 MSBuild 命令的末尾。 请参阅静态驱动程序验证程序命令(MSBuild)。
  • InterceptedBuild:SDV 无法生成驱动程序进行分析。
  • 扫描:SDV 找不到驱动程序的入口点。 此处的错误可能指示未找到入口点,应更新函数 roletypes 或 sdv-map.h。 有关详细信息,请参阅 使用函数角色类型声明批准 Sdv-map.h 文件
  • FinalCompile:SDV 无法使用规则和 OS 模型编译驱动程序。
  • CheckRule:SDV 无法正确验证规则。

可以通过为 SDV 启用诊断来了解有关错误的更多详细信息。 有关详细信息,请参阅 静态驱动程序验证程序诊断