Drivers com suporte

Para que o SDV verifique um driver, ele deve ser capaz de interpretar o código do driver, especificamente, os pontos de entrada do driver e o código em funções e rotinas que dão suporte à funcionalidade de driver necessária.

As seções a seguir descrevem os requisitos básicos para drivers e a sintaxe específica que o SDV espera dos drivers que ele verifica. O SDV não verifica se os drivers estão em conformidade com esses requisitos, mas se o driver não estiver em conformidade, o SDV poderá não ser executado e, em situações raras, relatará resultados falsos positivos ou falsos negativos devido a uma interpretação incorreta.

Características básicas do driver

O SDV é capaz de verificar apenas os drivers com as seguintes características:

  • O SDV verifica drivers e bibliotecas escritos em C e C++.

  • O SDV executa a verificação completa somente em drivers de dispositivo compatíveis com KMDF e em conformidade com WDM (drivers de função, drivers de filtro e drivers de ônibus), drivers NDIS (drivers de filtro, miniporta e protocolo) e drivers Storport.

  • O SDV tenta a verificação limitada de propriedades genéricas (como NullCheck) em drivers que não se encaixam nas categorias acima.

  • O SDV pode verificar drivers WDM que declaram suas funções de retorno de chamada de driver usando os tipos de função de função WDM. Para obter informações sobre como declarar funções, consulte Declarando funções usando tipos de função para drivers WDM.

  • O SDV pode verificar os drivers produzidos da Estrutura de Driver do Modo Kernel, desde que você declare cada função de retorno de chamada usando um tipo de função de retorno de chamada SDV-KMDF. Para obter mais informações, consulte Declarando funções usando tipos de função para drivers KMDF.

  • O SDV pode verificar drivers NDIS, desde que você anote cada função de retorno de chamada com a declaração de função usando um tipo de função de retorno de chamada SDV-NDIS. Para obter mais informações, consulte Declarando funções usando tipos de função para drivers NDIS.

  • O SDV pode verificar os drivers do Storport, desde que você anote cada função de retorno de chamada com a declaração de função. Faça isso usando um tipo de função de retorno de chamada SDV-Storport. Para obter mais informações, consulte Declarando funções usando tipos de função para drivers storport.

Requisitos básicos do driver

Para que o SDV verifique um driver WDM, o driver deve:

Para que o SDV verifique um driver KMDF, o driver deve:

Para que o SDV verifique um driver NDIS, o driver deve:

Além disso, o SDV pode verificar os drivers que dão suporte a:

Nomes de funções reservadas

O mecanismo de verificação SDV não funciona corretamente quando o código de driver ou biblioteca usa os mesmos padrões de nome de função que o SDV usa internamente.

Especificamente, o SDV não interpretará corretamente o código se:

  • O código inclui nomes de função que começam com __init e são seguidos por um ou mais inteiros, como __init123.

  • O código inclui nomes de função que começam com sdv_, como sdv_Func ou incluem a cadeia de caracteres _sdv_, como Func_sdv_ ou Func_sdv_foo.

  • A biblioteca usa um arquivo .def para renomear uma função exportada e o nome externo é o mesmo que o nome de outra função estática na biblioteca.

Se o código do driver ou o código da biblioteca incluir esses elementos, o SDV tentará verificar o driver ou processar a biblioteca, mas o resultado será NSF (Recurso Sem Suporte). Para obter mais informações sobre os resultados do SDV, consulte Interpretando resultados do verificador de driver estático.