判斷靜態驅動程式驗證器是否支援您的驅動程式或連結庫
靜態驅動程式驗證程式 (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 規則 來執行某種層級的靜態驗證。