Partilhar via


Verificação invariável de MDL para pilha

A opção Verificação invariável de MDL para Pilha monitora como o driver lida com buffers MDL invariáveis na pilha do driver. O Verificador de Driver pode detectar modificações ilegais de buffers MDL invariáveis. Para usar essa opção, a Verificação de E/S deve estar habilitada em pelo menos um driver.

Nota Essa opção está disponível a partir do Windows 8.

A opção Verificação invariável de MDL para Pilha garante que os drivers sigam as regras para buffers MDL invariáveis somente no ponto em que a solicitação está saindo da pilha do driver.

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

Um buffer invariável, 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 invariável não pode ser modificado em seu caminho de expedição, portanto, a comparação da assinatura do buffer é feita na última chamada para IoCallDriver.

A opção Verificação invariável de MDL para Pilha verifica a invariância do buffer de MDL em toda a pilha de driver, sem considerar o que acontece com o buffer à medida que ele passa por drivers individuais na pilha. Essa opção é global e não pode ser imposta seletivamente por driver. A opção Verificação invariável de MDL para Pilha só pode capturar a violação, sem conseguir identificar o driver que violou a invariância do buffer. Para ajudar a identificar o driver com falha, use a opção Verificação de MDL Invariável para Driver , que faz a validação da invariância do conteúdo do buffer em cada chamada para DDIs IoCallDriver e IoCompleteRequest .

Ativando essa opção

Você pode ativar o recurso verificação de MDL invariável para um ou mais drivers usando o Gerenciador de Verificador de Driver ou a linha de comando Verifier.exe. Você deve reiniciar o computador para ativar ou desativar a opção Verificação invariável de MDL para Pilha. Para obter mais informações, consulte Selecionando opções de verificador de driver.

Para ativar a opção Verificação invariável de MDL para Pilha, você também deve ativar a Verificação de E/S.

  • Na linha de comando

    Na linha de comando, a Verificação Invariável de MDL para Pilha é representada por 0x00002000 (Bit 13). Para ativar a Verificação invariável de MDL para Pilha, 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 invariável de MDL para Pilha (0x00002000). Por exemplo:

    verifier /flags 0x00002010 /driver MyDriver.sys
    

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

  • Usando o Gerenciador de Verificador de Driver

    1. Inicie o Gerenciador de Verificador de Driver. Digite Verificador em uma janela do Prompt de Comando.
    2. Selecione Criar configurações personalizadas (para desenvolvedores de código) e clique em Avançar.
    3. Selecione Selecionar configurações individuais em uma lista completa.
    4. Selecione (marcar) Verificação de E/S e Verificação invariável de MDL para Pilha.
    5. Reinicie o computador.