共用方式為


判斷靜態驅動程式驗證器是否支援您的驅動程式或連結庫

靜態驅動程式驗證器 (SDV) 完全支援 WDM、KMDF、NDIS 和 Storport 驅動程式和連結庫,而且對其他驅動程式的支援有限。 若要判斷驅動程式或連結庫是否支援並正確設定,請閱讀本節中所述的需求。

驅動程式或程式庫需求

如果您的驅動程式或連結庫符合下列其中一個條件, 未連結到下列任何類別 架構連結庫,您可以在 SDV 分析工具中執行一組完整的規則。

  • 您有 WDM 驅動程式或程式庫。
  • 您有連結至 WdfLdr.lib 或 WdfDriverEntry.lib 的驅動程式或程式庫。
  • 您有連結至 NDIS.lib 的驅動程式或函式庫。
  • 您有連結到 Storport.lib 的驅動程式或程式庫。

如果您有超出上述條件的驅動程式,SDV 會考慮驅動程式「一般」並執行一組有限的檢查。

此外,請注意,由 SDV 驗證的連結庫必須是內核模式驅動程式連結庫,而不是一般 C 或 C++ 連結庫。

靜態驅動程式驗證器支持驅動程式或庫,即使驅動程式或庫連結至多個工具程式庫,也符合這些條件。

此外,若要執行分析,SDV 需要:

  • 驅動程式已 使用函式角色類型宣告至少一個進入點。
  • 驅動程式會正確建置和連結(在 Visual Studio 中使用 MSBuild)。
  • 如果驅動程式或連結庫使用 KMDF,驅動程式或連結庫會使用 KDMF 1.7 版或更新版本。
  • 如果驅動程式或連結庫使用 NDIS,它會使用 NDIS 6.0、6.1、6.20、6.30 或 6.40 版。 請注意,此列表可能會變更。
  • 驅動程式不會結合驅動程式模型(例如 KMDF 與 WDM,或 KMDF 和 NDIS)。

還有其他因素會影響靜態分析結果的質量和精確度。 這些因素包括:

  • 使用尚未由 SDV 處理的程式庫。
  • 驅動程式的大小,特別是如果驅動程式有超過 100K 行的程式代碼。
  • 使用特定語言的功能,例如虛擬函式和指標算術。

Visual Studio 專案需求

若要使用靜態驅動程序驗證器,Visual Studio 項目必須具有下列設定:

  • UseDebugLibraries = false
  • Platform = 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

Static Driver Verifier 和 Microsoft Class Framework 函式庫

如果您使用必須連結到類別架構連結庫的WDM驅動程式,而該驅動程式在此架構清單中,則驅動程式將會無法通過靜態驅動程式驗證器的檢查。 不過,仍有一些一般規則仍可使用,例如 NullCheck 規則 來執行某種層級的靜態驗證。