Compartilhar via


Conjunto de regras de uso de DDI (NDIS)

Use essas regras para verificar se seu driver usa os DDIs do NDIS corretamente.

Nesta seção

Tópico Descrição

Init_DeRegisterInterrupt

A regra Init_DeRegisterInterrupt especifica que, se NdisMRegisterInterruptEx for chamado pelo menos uma vez durante MPInitilize, NdisMDeregisterInterruptEx deverá ser chamado pelo menos uma vez no MPHaltEx.

Init_NdisAllocateIoWorkItem

A regra Init_NdisAllocateIoWorkItem especifica que, se NdisAllocateIoWorkItem for chamado pelo menos uma vez durante MiniportInitializeEx, a função NdisFreeIoWorkItem deverá:

Init_RegisterInterrupt

A regra Init_RegisterInterrupt especifica que o registro de interrupções, que geralmente ocorre durante a inicialização, deve ser desfeito se algo der errado no processo de inicialização ou durante a interrupção do driver de miniporto.

Se NdisMRegisterInterruptEx for chamado pelo menos uma vez durante MiniportInitializeEx, a função NdisMDeregisterInterruptEx deverá ser chamada pelo menos uma vez no MiniportHaltEx.

Init_RegisterSG

A regra Init_RegisterSG especifica que o registro da SG (lista de coleta de dispersão), que geralmente acontece durante a inicialização, deve ser desfeito se algo der errado no processo de inicialização ou durante a interrupção do driver de miniporto.

Se NdisMRegisterScatterGatherDma for chamado pelo menos uma vez durante MiniportInitializeEx, a função NdisMDeregisterScatterGatherDma deverá ser chamada pelo menos uma vez no MiniportHaltEx.

NdisFDeregisterFilterDriver

Um driver de filtro deve invocar NdisFDeregisterFilterDriver a partir de sua rotina, FilterDriverUnload.

NdisMDeregisterInterruptEx

Depois que NdisMDeregisterInterruptEx devolve o controle, o driver miniporto não poderá chamar a função NdisMSynchronizeWithInterruptEx.

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.

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).