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.