支持的驱动程序

若要验证驱动程序,SDV 必须能够解释驱动程序代码,特别是驱动程序的入口点,以及支持所需驱动程序功能的函数和例程中的代码。

以下部分介绍驱动程序的基本要求,以及 SDV 对它所验证的驱动程序所期望的特定语法。 SDV 不会验证驱动程序是否符合这些要求,但如果驱动程序不符合,则 SDV 可能无法运行,在极少数情况下,它会报告误报或误报结果。

基本驱动程序特征

SDV 只能验证具有以下特征的驱动程序:

基本驱动程序要求

要使 SDV 验证 WDM 驱动程序,驱动程序必须:

要使 SDV 验证 KMDF 驱动程序,驱动程序必须:

要使 SDV 验证 NDIS 驱动程序,驱动程序必须:

此外,SDV 可以验证支持以下项的驱动程序:

保留的函数名称

当驱动程序或库代码使用与 SDV 在内部使用的相同函数名称模式时,SDV 验证引擎 无法正常运行。

具体而言,在执行以下操作时,SDV 不会正确解释代码:

  • 该代码包含以 __init 开头、后跟一个或多个整数(如 __init123)的函数名称。

  • 代码包括以 sdv_ 开头的函数名称(如 sdv_Func),或包含字符串 _sdv_(如 Func_sdv_ 或 Func_sdv_foo)。

  • 库使用 .def 文件重命名导出的函数,并且外部名称与库中另一个静态函数的名称相同。

如果驱动程序代码或库代码包含这些元素,SDV 会尝试验证驱动程序或处理库,但结果是 NSF) (不支持的功能 。 有关 SDV 结果的详细信息,请参阅 解释静态驱动程序验证程序结果