共用方式為


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

靜態驅動程式驗證程式 (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 處理的公用程式連結庫。
  • 驅動程式的大小,特別是當驅動程式有超過 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 S一.lib winhv.lib
在 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 規則 來執行某種層級的靜態驗證。