Partilhar via


Verificação de invariantes MDL para pilhas

A opção Invariant MDL Checking for Stack monitora como o driver lida com buffers MDL invariantes na pilha de drivers. Driver Verifier pode detetar a modificação ilegal de buffers MDL invariantes. Para usar essa opção, a Verificação de E/S deve estar habilitada em pelo menos um driver.

Observação Esta opção está disponível a partir do Windows 8.

A opção Invariant MDL Checking for Stack garante que os drivers sigam as regras para buffers MDL invariantes somente no ponto em que a solicitação está saindo da pilha de drivers.

A primeira vez que um IRP com MDL invariante é visto na rotina IoCallDriver , uma assinatura exclusiva é calculada a partir do conteúdo do buffer MDL invariante e armazenada em um banco de dados interno. Durante a conclusão do IRP na rotina IoCompleteRequest , se o IRP ainda carrega um MDL invariante para o qual registramos a assinatura, o Verificador de Driver valida que o buffer não foi alterado.

Um buffer invariante, para a solicitação de gravação, não pode ser modificado durante todo o tempo de vida do IRP. Para uma solicitação de leitura, um buffer invariante não pode ser modificado em seu caminho de despacho, portanto, a comparação da assinatura do buffer é feita na última chamada para IoCallDriver.

A opção Invariant MDL Checking for Stack verifica a invariância do buffer MDL em toda a pilha de drivers, sem levar em conta o que acontece com o buffer à medida que ele passa por drivers individuais na pilha. Esta opção é global e não pode ser aplicada seletivamente por condutor. A opção Invariant MDL Checking for Stack só pode detetar a violação, sem ser capaz de identificar o driver que violou a invariância do buffer. Para ajudar a identificar o driver defeituoso, use a opção Invariant MDL Checking for Driver , que faz a validação da invariância do conteúdo do buffer em cada chamada para IoCallDriver e IoCompleteRequest DDIs.

Ativando esta opção

Você pode ativar o recurso Invariant MDL Checking for Stack para um ou mais drivers usando o Driver Verifier Manager ou a linha de comando Verifier.exe. Você deve reiniciar o computador para ativar ou desativar a opção Invariant MDL Checking for Stack. Para obter mais informações, consulte Selecionando opções do verificador de driver.

Para ativar a opção Invariant MDL Checking for Stack, você também deve ativar a Verificação de E/S.

  • Na linha de comando

    Na linha de comando, o Invariant MDL Checking for Stack é representado por 0x00002000 (Bit 13). Para ativar o Invariant MDL Checking for Stack, use um valor de sinalizador de 0x00002010 ou adicione 0x00002010 ao valor do sinalizador. Esse valor ativa a Verificação de E/S (0x10) e a Verificação de MDL Invariante para Pilha (0x00002000). Por exemplo:

    verifier /flags 0x00002010 /driver MyDriver.sys
    

    O recurso estará ativo após a próxima inicialização.

  • Usando o Gestor do Verificador de Drivers

    1. Inicie o Driver Verifier Manager. Digite Verifier numa janela da Linha de Comandos.
    2. Selecione Criar configurações personalizadas (para desenvolvedores de código) e clique em Avançar.
    3. Selecione configurações individuais de uma lista completa.
    4. Selecione (verifique) Verificação de E/S e Verificação de MDL Invariante para Pilha.
    5. Reinicie o computador.