Déterminer si Static Driver Verifier prend en charge votre pilote ou votre bibliothèque
Static Driver Verifier (SDV) prend entièrement en charge les bibliothèques et les pilotes WDM, KMDF, NDIS et Storport, et a une prise en charge limitée pour les autres pilotes. Pour déterminer si votre pilote ou votre bibliothèque est pris en charge et configuré correctement, lisez les exigences décrites dans cette section.
Configuration requise pour les pilotes ou les bibliothèques
Vous pouvez exécuter l’ensemble complet de règles dans l’outil d’analyse SDV si votre pilote ou votre bibliothèque répond à l’une des conditions suivantes et n’est liée à aucune des bibliothèques d’infrastructure de classes répertoriées ci-dessous.
- Vous disposez d’un pilote ou d’une bibliothèque WDM.
- Vous disposez d’un pilote ou d’une bibliothèque qui établit un lien vers WdfLdr.lib ou WdfDriverEntry.lib.
- Vous disposez d’un pilote ou d’une bibliothèque qui établit un lien vers NDIS.lib.
- Vous disposez d’un pilote ou d’une bibliothèque qui est lié à Storport.lib.
Si vous avez un pilote qui se trouve en dehors des conditions ci-dessus, SDV considérera le pilote « générique » et exécutera un ensemble limité de vérifications.
En outre, notez que les bibliothèques vérifiées par SDV doivent être des bibliothèques de pilotes en mode noyau, et non des bibliothèques générales C ou C++.
Static Driver Verifier prend en charge un pilote ou une bibliothèque qui passe ces conditions, même si le pilote ou la bibliothèque est lié à plusieurs bibliothèques d’utilitaires.
En outre, pour effectuer l’analyse, SDV nécessite que :
- Le pilote a déclaré au moins un point d’entrée à l’aide de déclarations de type de rôle de fonction.
- Le pilote génère et lie correctement (dans Visual Studio à l’aide de MSBuild).
- Si le pilote ou la bibliothèque utilise KMDF, le pilote ou la bibliothèque utilise KDMF version 1.7 ou ultérieure.
- Si le pilote ou la bibliothèque utilise NDIS, elle utilise NDIS version 6.0, 6.1, 6.20, 6.30 ou 6.40. Notez que cette liste est susceptible d’être modifiée.
- Le pilote ne combine pas de modèles de pilotes (par exemple, KMDF avec WDM, ou KMDF et NDIS).
D’autres facteurs affectent la qualité et la précision des résultats de l’analyse statique. Exemples de facteurs :
- Utilisation de bibliothèques d’utilitaires qui n’ont pas été traitées par SDV.
- Taille du pilote, en particulier s’il a plus de 100 000 lignes de code.
- Utilisation de fonctionnalités spécifiques au langage, telles que les fonctions virtuelles et l’arithmétique de pointeur.
Configuration requise du projet Visual Studio
Pour utiliser Static Driver Verifier, le projet Visual Studio doit avoir les paramètres suivants :
- UseDebugLibraries = false
- Plateforme = Win32 (x86) ou x64
Bibliothèques d’infrastructure de classes
Si vous disposez d’un pilote ou d’une bibliothèque WDM et que vous souhaitez exécuter SDV, le pilote ou la bibliothèque ne doit pas être lié à l’une des bibliothèques d’infrastructure de classes suivantes.
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 |
Bibliothèques d’utilitaires
Static Driver Verifier prend en charge un pilote ou une bibliothèque qui a des liens vers plusieurs bibliothèques d’utilitaires si le pilote ou la bibliothèque est conforme aux exigences du pilote ou de la bibliothèque.
Nom de fichier |
---|
BufferOverflowK.lib |
hal.lib |
ntoskrnl.lib |
ntstrsafe.lib |
rtlver.lib |
sehupd.lib |
wdm.lib |
wmilib.lib |
wdmsec.lib |
Bibliothèques Static Driver Verifier et Microsoft Class Framework
Si vous utilisez des pilotes WDM qui doivent être liés à une bibliothèque d’infrastructure de classes dans la liste Bibliothèques d’infrastructure de classes, le pilote échoue à la condition du vérificateur de pilote statique. Toutefois, il existe certaines règles génériques qui peuvent toujours être utilisées, telles que la règle NullCheck pour effectuer un certain niveau de vérification statique.