Determinar se o Verificador de Driver Estático dá suporte ao driver ou à biblioteca
O SDV (Verificador de Driver Estático) dá suporte total a drivers e bibliotecas WDM, KMDF, NDIS e Storport e tem suporte limitado para outros drivers. Para determinar se o driver ou biblioteca tem suporte e está configurado corretamente, leia os requisitos descritos nesta seção.
Requisitos de driver ou biblioteca
Você poderá executar o conjunto completo de regras na ferramenta de análise de SDV se o driver ou a biblioteca atender a uma das seguintes condições e não vincular a nenhuma das bibliotecas de estrutura de classe listadas abaixo.
- Você tem um driver ou biblioteca WDM.
- Você tem um driver ou biblioteca vinculado a WdfLdr.lib ou WdfDriverEntry.lib.
- Você tem um driver ou biblioteca que é vinculado ao NDIS.lib.
- Você tem um driver ou biblioteca vinculado ao Storport.lib.
Se você tiver um driver fora das condições acima, o SDV considerará o driver "genérico" e executará um conjunto limitado de verificações.
Além disso, observe que as bibliotecas verificadas pelo SDV devem ser bibliotecas de driver no modo kernel, não bibliotecas C ou C++ gerais.
O Verificador de Driver Estático dá suporte a um driver ou biblioteca que passa essas condições mesmo que o driver ou biblioteca seja vinculado a várias bibliotecas de utilitários.
Além disso, para executar a análise, o SDV requer que:
- O driver declarou pelo menos um ponto de entrada usando declarações de tipo de função.
- O driver cria e vincula corretamente (no Visual Studio usando o MSBuild).
- Se o driver ou a biblioteca usar KMDF, o driver ou a biblioteca usará o KDMF versão 1.7 ou posterior.
- Se o driver ou a biblioteca usar o NDIS, ele usará o NDIS versão 6.0, 6.1, 6.20, 6.30 ou 6.40. Observe que essa lista está sujeita a alterações.
- O driver não combina modelos de driver (por exemplo, KMDF com WDM ou KMDF e NDIS).
Há outros fatores que afetam a qualidade e a precisão dos resultados da análise estática. Esses fatores incluem:
- Uso de bibliotecas de utilitários que não foram processadas pelo SDV.
- Tamanho do driver, especialmente se ele tiver mais de 100 mil linhas de código.
- Uso de recursos específicos da linguagem, como funções virtuais e aritmética de ponteiro.
Requisitos de projeto do Visual Studio
Para usar o Verificador de Driver Estático, o projeto do Visual Studio deve ter as seguintes configurações:
- UseDebugLibraries = false
- Platform = Win32 (x86) ou x64
Bibliotecas de estrutura de classe
Se você tiver um driver ou biblioteca WDM e quiser executar o SDV, o driver ou biblioteca não deverá vincular a uma das bibliotecas de estrutura de classe a seguir.
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 utilitários
O Verificador de Driver Estático dá suporte a um driver ou biblioteca que tenha links para várias bibliotecas de utilitários se o driver ou a biblioteca estiver em conformidade com os requisitos de Driver ou Biblioteca.
Nome do Arquivo |
---|
BufferOverflowK.lib |
hal.lib |
ntoskrnl.lib |
ntstrsafe.lib |
rtlver.lib |
sehupd.lib |
wdm.lib |
wmilib.lib |
wdmsec.lib |
Bibliotecas do Verificador de Driver Estático e do Microsoft Class Framework
Se você estiver trabalhando com drivers WDM que devem vincular a uma biblioteca de estruturas de classe na lista Bibliotecas de estrutura de classe, o driver falhará na condição verificador de driver estático. No entanto, há algumas regras genéricas que ainda podem ser usadas, como a regra NullCheck , para executar algum nível de verificação estática.