Determinar si el comprobador de controladores estáticos admite el controlador o la biblioteca
El comprobador de controladores estáticos (SDV) es totalmente compatible con los controladores y bibliotecas WDM, KMDF, NDIS y Storport, y tiene compatibilidad limitada con otros controladores. Para determinar si el controlador o la biblioteca se admiten y se configuran correctamente, lea los requisitos descritos en esta sección.
Requisitos de controlador o biblioteca
Puede ejecutar el conjunto completo de reglas en la herramienta de análisis de SDV si su controlador o biblioteca cumple una de las siguientes condiciones y no se vincula a ninguna de las bibliotecas de marcos de clases que se enumeran a continuación.
- Tiene un controlador o biblioteca WDM.
- Tiene un controlador o biblioteca que se vincula a WdfLdr.lib o WdfDriverEntry.lib.
- Tiene un controlador o biblioteca que se vincula a NDIS.lib.
- Tiene un controlador o biblioteca que se vincula a Storport.lib.
Si tiene un controlador que se encuentra fuera de las condiciones anteriores, SDV considerará el controlador "genérico" y ejecutará un conjunto limitado de comprobaciones.
Además, tenga en cuenta que las bibliotecas comprobadas por SDV deben ser bibliotecas de controladores en modo kernel, no bibliotecas generales de C o C++.
Static Driver Verifier admite un controlador o biblioteca que pasa esas condiciones incluso si el controlador o la biblioteca se vinculan a varias bibliotecas de utilidades.
Además, para realizar el análisis, SDV requiere que:
- El controlador ha declarado al menos un punto de entrada mediante declaraciones de tipo de rol de función.
- El controlador compila y vincula correctamente (en Visual Studio mediante MSBuild).
- Si el controlador o la biblioteca usa KMDF, el controlador o la biblioteca usa KDMF versión 1.7 o posterior.
- Si el controlador o la biblioteca usa NDIS, usa la versión 6.0, 6.1, 6.20, 6.30 o 6.40. Tenga en cuenta que esta lista está sujeta a cambios.
- El controlador no combina modelos de controlador (por ejemplo, KMDF con WDM o KMDF y NDIS).
Hay otros factores que afectan a la calidad y la precisión de los resultados del análisis estático. Entre estos factores se incluyen:
- Uso de bibliotecas de utilidades que SDV no ha procesado.
- Tamaño del controlador, especialmente si tiene más de 100 000 líneas de código.
- Uso de características específicas del lenguaje, como funciones virtuales y aritmética de puntero.
Requisitos del proyecto de Visual Studio
Para usar el comprobador de controladores estáticos, el proyecto de Visual Studio debe tener la siguiente configuración:
- UseDebugLibraries = false
- Plataforma = Win32 (x86) o x64
Bibliotecas de marcos de clases
Si tiene un controlador o biblioteca WDM y desea ejecutar SDV, el controlador o la biblioteca no deben vincularse a una de las siguientes bibliotecas de marcos de clases.
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 |
Bibliotecas de utilidades
Static Driver Verifier admite un controlador o biblioteca que tiene vínculos a varias bibliotecas de utilidades si el controlador o la biblioteca se ajusta a los requisitos de controlador o biblioteca.
Nombre de archivo |
---|
BufferOverflowK.lib |
hal.lib |
ntoskrnl.lib |
ntstrsafe.lib |
rtlver.lib |
sehupd.lib |
wdm.lib |
wmilib.lib |
wdmsec.lib |
Comprobador de controladores estáticos y bibliotecas de Microsoft Class Framework
Si está trabajando con controladores WDM que deben vincularse a una biblioteca de marcos de clases en la lista Bibliotecas de marcos de clases, el controlador producirá un error en la condición Comprobador de controladores estáticos. Sin embargo, hay algunas reglas genéricas que todavía se pueden usar como la regla NullCheck para realizar algún nivel de comprobación estática.