确定静态驱动程序验证程序是否支持你的驱动程序或库
静态驱动程序验证程序 (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 规则 )可用于执行某种级别的静态验证。