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

本部分介绍一些更常见的 SDV 错误消息的含义,并建议解决这些问题的方法。

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

  • SDV 仅在非调试配置上运行:如消息所示,SDV 必须在非调试配置上运行。 请确保项目设置为发布配置,或者创建一个(如果不可用)并重新启动 SDV。
  • 加载可用规则时出错:如果驱动程序不是 WDM、KMDF、NDIS 或 Storport 驱动程序) ,SDV 要么找不到驱动程序模型的规则,要么无法正确确定驱动程序模型, (更可能。 如果 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 启用诊断来了解有关错误的更多详细信息。 有关详细信息,请参阅 静态驱动程序验证程序诊断