Compartilhar via


Conjunto de regras de uso de DDI (WDM)

Use essas regras para verificar se o driver utiliza corretamente os DDIs do WDM.

Nesta seção

Tópico Descrição

DebugBreakUsage

A regra DebugBreakUsage especifica que o driver não deve chamar DbgBreakPoint ou DbgBreakPointWithStatus. Essa regra só se aplica quando você está criando uma versão não depuração do driver.

DoubleFetch

A regra DoubleFetch verifica a dupla busca nos ponteiros de memória do modo de usuário. Acessos duplos no modo kernel da memória do modo de usuário podem levar a um problema de segurança de condição de corrida. Ao acessar dados do modo de usuário, o código do modo kernel precisa fazer uma cópia dos dados do modo de usuário localmente e evitar acessar os dados do modo de usuário várias vezes. A falha ao fazer isso resulta em um tipo de problema conhecido como "busca dupla", em que os dados podem ser alterados após terem sido acessados pela primeira vez.

NullCheck

A regra NullCheck verifica se um valor NULL dentro do código de driver não é desreferenciado posteriormente no driver. Essa regra relatará um defeito se uma dessas condições for verdadeira:

  • Há uma atribuição de NULL que é desreferenciada posteriormente.
  • Há um parâmetro global para um procedimento em um driver que pode ser NULL e que é desreferenciado mais tarde, e há uma verificação explícita no driver que sugere que o valor inicial do ponteiro pode ser NULL.

Com violações de regra NullCheck, as instruções de código mais relevantes são realçadas no painel de árvore de rastreamento. Para obter mais informações sobre como trabalhar com a saída do relatório, consulte Relatório do Verificador de Driver Estático e Noções básicas sobre o Visualizador de Rastreamento.

SafeStrings

A regra SafeStrings especifica que o driver chama apenas as funções de manipulação de cadeia de caracteres que protegem o sistema contra intrusões não intencionais ou mal-intencionadas. Essas funções de cadeia de caracteres seguras para drivers são definidas em Ntstrsafe.h.

ObsoleteDDIs

A regra ObsoleteDDIs especifica que os drivers não devem chamar FsRtlPrivateLock. Essa função é obsoleta. Use FsRtlFastLock.

Para selecionar o conjunto de regras de uso de DDI

  1. Selecione seu projeto de driver (.vcxProj) no Microsoft Visual Studio. No menu Driver , clique em Iniciar Verificador de Driver Estático....

  2. Clique na guia Regras . Em Conjuntos de Regras, selecione DDIUsage.

    Para selecionar o conjunto de regras padrão usando uma janela de prompt de comando do desenvolvedor do Visual Studio, especifique DDIUsage.sdv com a opção /check. Por exemplo:

    msbuild /t:sdv /p:Inputs="/check:DDIUsage.sdv" mydriver.VcxProj /p:Configuration="Win8 Release" /p:Platform=Win32
    

    Para obter mais informações, consulte Usando o Verificador de Driver Estático para localizar defeitos em drivers e comandos do Verificador de Driver Estático (MSBuild).