确定静态驱动程序验证程序是否支持你的驱动程序或库

静态驱动程序验证程序 (SDV) 完全支持 WDM、KMDF、NDIS 和 Storport 驱动程序和库,并且对其他驱动程序的支持有限。 若要确定驱动程序或库是否受支持和正确配置,请阅读本节中所述的要求。

驱动程序或库要求

如果驱动程序或库满足以下条件之一, 并且 未链接到 下面列出的任何类框架库,则可以在 SDV 分析工具中运行完整的规则集。

  • 你有一个 WDM 驱动程序或库。
  • 你有一个链接到 WdfLdr.lib 或 WdfDriverEntry.lib 的驱动程序或库。
  • 你有一个链接到 NDIS.lib 的驱动程序或库。
  • 你有一个链接到 Storport.lib 的驱动程序或库。

如果你的驱动程序不在上述条件之外,SDV 会将该驱动程序视为“通用”,并运行一组有限的检查。

此外,请注意,SDV 验证的库必须是内核模式驱动程序库,而不是常规 C 或 C++ 库。

静态驱动程序验证程序支持通过这些条件的驱动程序或库,即使驱动程序或库链接到多个 实用工具库也是如此。

此外,若要执行分析,SDV 要求:

  • 驱动程序已 使用函数角色类型声明声明至少一个入口点。
  • 驱动程序使用 MSBuild) 在 Visual Studio 中正确生成和链接 (。
  • 如果驱动程序或库使用 KMDF,则驱动程序或库使用 KDMF 1.7 或更高版本。
  • 如果驱动程序或库使用 NDIS,则使用 NDIS 版本 6.0、6.1、6.20、6.30 或 6.40。 请注意,此列表可能会更改。
  • 驱动程序不会将驱动程序模型组合 (例如 KMDF 与 WDM 或 KMDF 和 NDIS) 。

还有其他因素会影响静态分析结果的质量和准确性。 这些因素包括:

  • 使用尚未由 SDV 处理的实用工具库。
  • 驱动程序的大小,尤其是代码超过 10 万行时。
  • 使用特定于语言的功能,例如虚拟函数和指针算术。

Visual Studio 项目要求

若要使用静态驱动程序验证程序,Visual Studio 项目必须具有以下设置:

  • UseDebugLibraries = false
  • 平台 = Win32 (x86) 或 x64

类框架库

如果你有 WDM 驱动程序或库,并且想要运行 SDV,则驱动程序或库不得链接到以下类框架库之一。

1394bus.lib fltMgr.lib rdbss.lib usbrpm.lib
acpi.lib FsDepends.lib RNDISMP.lib videoprt.lib
armppm.lib fwpkclnt.lib RNDISMP6.lib vwififlt.lib
ataport.lib hidclass.lib RNDISMPX.lib watchdog.lib
ath_hwpci.lib hidparse.lib rpcxdr.lib win32k.lib
athhal.lib hwpolicy.lib Saha.lib winhv.lib
battc.lib ipmidrv_hrmcust.lib scsiport.lib WMBBCLASS.lib
BdaSup.lib irt30.lib smclib.lib
bdl.lib irt30.lib Soft1667FaultInjectionLimpetPool.lib
btampm.lib ks.lib SoftFCKernel.lib
bthport.lib ksecdd.lib SoftFCLimpetPool.lib
BTHPRINT.lib ksmartcpu.lib SoftSATAKernel.lib
classpnp.lib mcd.lib SoftStorageLimpetPool.lib
clfs.lib mpio.lib srvnet.lib
cng.lib mrxsmb.lib storvsp.lib
crashdmp.lib msnfsflt.lib stream.lib
csr_vfp_avdtp.lib msrpc.lib tape.lib
diskdump.lib mup.lib tbs.lib
drmk.lib ndistapi.lib tcpip.lib
dumpata.lib netio.lib tdi.lib
dumpfve.lib ntasn1k.lib termdd.lib
dxapi.lib parallel.lib USBCAMD.lib
dxg.lib pciidex.lib USBCAMD2.lib
dxgkrnl.lib portcls.lib usbd.lib
dxgmms1.lib protogon.lib usbport.lib

实用工具库

如果驱动程序或库符合驱动程序或库要求,静态驱动程序验证程序支持具有指向多个实用工具库的链接 的驱动程序或库

文件名
BufferOverflowK.lib
hal.lib
ntoskrnl.lib
ntstrsafe.lib
rtlver.lib
sehupd.lib
wdm.lib
wmilib.lib
wdmsec.lib

静态驱动程序验证器和 Microsoft 类框架库

如果使用的是必须链接到类框架库列表中的类 框架库 的 WDM 驱动程序,驱动程序将无法满足静态驱动程序验证程序条件。 但是,仍有一些通用规则(例如 NullCheck 规则 )可用于执行某种级别的静态验证。