Determinare se il driver statico verifica supporta il driver o la libreria

Static Driver Verifier (SDV) supporta completamente WDM, KMDF, NDIS e librerie Storport e supporta solo altri driver. Per determinare se il driver o la libreria è supportato e configurato correttamente, leggere i requisiti descritti in questa sezione.

Requisiti del driver o della libreria

È possibile eseguire il set completo di regole nello strumento di analisi SDV se il driver o la libreria soddisfa una delle condizioni seguenti e non collega a nessuna delle librerie del framework di classe elencate di seguito.

  • È disponibile un driver WDM o una libreria.
  • È disponibile un driver o una libreria che si collega a WdfLdr.lib o WdfDriverEntry.lib.
  • È disponibile un driver o una libreria che si collega a NDIS.lib.
  • È disponibile un driver o una libreria che si collega a Storport.lib.

Se si dispone di un driver che rientra all'esterno delle condizioni precedenti, SDV considererà il driver "generico" ed eseguirà un set limitato di controlli.

Si noti inoltre che le librerie verificate da SDV devono essere librerie driver in modalità kernel, non librerie C o C++ generali.

La verifica driver statica supporta un driver o una libreria che supera queste condizioni anche se il driver o la libreria collega a più librerie di utilità.

Inoltre, per eseguire l'analisi, SDV richiede che:

  • Il driver ha dichiarato almeno un punto di ingresso usando dichiarazioni di tipo di ruolo funzione.
  • Il driver compila e collega correttamente (in Visual Studio usando MSBuild).
  • Se il driver o la libreria usa KMDF, il driver o la libreria usa KDMF versione 1.7 o successiva.
  • Se il driver o la libreria usa NDIS, usa NDIS versione 6.0, 6.1, 6.20, 6.30 o 6.40. Si noti che questo elenco è soggetto a modifiche.
  • Il driver non combina modelli di driver, ad esempio KMDF con WDM o KMDF e NDIS.

Esistono altri fattori che influiscono sulla qualità e sull'accuratezza dei risultati dell'analisi statica. Questi fattori includono:

  • Uso delle librerie di utilità che non sono state elaborate da SDV.
  • Dimensioni del driver, in particolare se ha più di 100K righe di codice.
  • Uso di funzionalità specifiche del linguaggio, ad esempio funzioni virtuali e aritmetica puntatore.

Requisiti del progetto di Visual Studio

Per usare il verifica driver statico, il progetto di Visual Studio deve avere le impostazioni seguenti:

  • UseDebugLibraries = false
  • Piattaforma = Win32 (x86) o x64

Librerie del framework di classe

Se si dispone di un driver o una libreria WDM e si vuole eseguire SDV, il driver o la libreria non deve collegarsi a una delle librerie del framework di classi seguenti.

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 Soft1667FaultChangectionLimpetPool.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

Librerie di utilità

Static Driver Verifier supporta un driver o una libreria che include collegamenti a più librerie di utilità se il driver o la libreria è conforme ai requisiti del driver o della libreria.

File Name
BufferOverflowK.lib
hal.lib
ntoskrnl.lib
ntstrsafe.lib
rtlver.lib
sehupd.lib
wdm.lib
wmilib.lib
wdmsec.lib

Static Driver Verifier e librerie microsoft Class Framework

Se si utilizzano driver WDM che devono essere collegati a una libreria del framework di classi nelle librerie del framework di classe, il driver avrà esito negativo nella condizione Static Driver Verifier. Esistono tuttavia alcune regole generiche che possono comunque essere usate, ad esempio la regola NullCheck , per eseguire un certo livello di verifica statica.