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
- Inicie o Gerenciador de Verificador de Driver. Digite Verificador em uma janela do Prompt de Comando.
- Selecione Criar configurações personalizadas (para desenvolvedores de código) e clique em Avançar.
- Selecione Selecionar configurações individuais em uma lista completa.
- Selecione (marcar) Verificação de E/S e Verificação invariável de MDL para Pilha.
- Reinicie o computador.