Driver Verifier
O Driver Verifier monitora drivers gráficos e drivers no modo kernel do Windows para detectar chamadas de função ilegais ou ações que podem corromper o sistema. O Driver Verifier pode submeter drivers do Windows a uma variedade de pressões e testes para encontrar comportamentos inadequados. Você pode configurar quais testes executar, o que permite colocar um driver sob cargas de estresse pesadas ou realizar testes mais simplificados. Você também pode executar o Driver Verifier em vários drivers simultaneamente ou em um driver por vez.
Cuidado
- Executar o Verificador de Driver pode fazer com que o computador trave.
- Você só deve executar o Verificador de Driver em computadores que você está usando para teste e depuração.
- Você precisa estar no grupo Administradores no computador para usar o Driver Verifier.
Onde posso baixar o Driver Verifier?
Você não precisa baixar o Verificador de Driver, porque ele está incluído na maioria das versões do Windows em %WinDir%\system32\ como Verifier.exe. (O Verificador de Driver não está incluído no Windows 10 S, portanto, recomendamos testar o comportamento do driver no Windows 10.) O Driver Verifier não é distribuído separadamente como um pacote de download.
Para obter informações sobre alterações no Verificador de Driver para Windows 10 e versões anteriores do Windows, consulte Verificador de Driver: Novidades.
Quando usar o Verificador de Driver
Execute o Driver Verifier durante todo o desenvolvimento e teste do seu driver. Mais especificamente, use o Verificador de Driver para as seguintes finalidades:
Encontrar problemas no início do ciclo de desenvolvimento, quando são mais fáceis e menos dispendiosos de corrigir.
Para solução de problemas e depuração de falhas de teste e falhas do computador.
Para monitorar o comportamento ao implantar um driver para teste usando o WDK, o Visual Studio e os testes do Windows Hardware Lab Kit (Windows HLK) ou do Windows Hardware Certification Kit (para Windows 8.1). Para obter mais informações sobre como testar drivers, consulte Testando um driver.
Importante
O Programa de Compatibilidade de Hardware do Windows requer o CodeQL para testes de logotipo de ferramenta estática (STL) em nossos sistemas operacionais cliente e servidor. Continuaremos a manter o suporte para SDV e CA em produtos mais antigos. Os parceiros são altamente encorajados a revisar os requisitos do CodeQL para o Teste de Logotipo da Ferramenta Estática. Para obter mais informações sobre como usar o CodeQL, consulte CodeQL e o teste de logotipo de ferramentas estáticas.
Como iniciar o Verificador de Driver
Você só deve executar o Verificador de Driver em computadores de teste ou em computadores que você está testando e depurando. Para obter o máximo benefício do Verificador de Driver, você deve usar um depurador de kernel e conectar-se ao computador de teste. Para obter mais informações sobre ferramentas de depuração, consulte Ferramentas de depuração para Windows (WinDbg, KD, CDB, NTSD).
Inicie uma janela do Prompt de Comando selecionando Executar como administrador e digite verificador para abrir o Gerenciador do Verificador de Driver.
Selecione Criar configurações padrão (a tarefa padrão) e selecione Avançar.
Você também pode escolher Criar configurações personalizadas para selecionar a partir de configurações predefinidas ou para selecionar opções individuais. Para obter mais informações, consulte Opções e classes de regra do Verificador de Driver e Selecionando opções do Verificador de Driver.
Em Selecione quais drivers verificar, escolha um dos esquemas de seleção descritos na tabela a seguir.
Opção Uso recomendado Selecionar automaticamente drivers não assinados Útil para testes em computadores que executam versões do Windows que não exigem drivers assinados.
Selecionar automaticamente drivers criados para versões mais antigas do Windows Útil para testar a compatibilidade do driver com versões mais recentes do Windows.
Selecionar automaticamente todos os drivers instalados neste computador Fornece cobertura máxima em termos do número de drivers que são testados em um sistema. Essa opção é útil para cenários de teste em que um driver pode interagir com outros dispositivos ou drivers em um sistema.
Essa opção também pode esgotar os recursos disponíveis para Pool Especial e algum rastreamento de recursos. O teste de todos os drivers também pode afetar negativamente o desempenho do sistema.
Selecionar nomes de driver em uma lista Na maioria dos casos, você desejará especificar quais drivers testar.
A seleção de todos os drivers em uma pilha de dispositivos permite que a opção Verificação de E/S Avançada rastreie objetos e verifique a conformidade, pois um pacote de solicitação de E/S (IRP) é passado entre cada um dos drivers na pilha, o que permite que um nível maior de detalhes seja fornecido quando um erro é detectado.
Selecione um único driver se estiver executando um cenário de teste que mede as métricas de desempenho do sistema ou do driver, ou se desejar alocar o maior número de recursos disponíveis para detectar corrupção de memória ou problemas de controle de recursos (como deadlocks ou mutexes). As opções de Pool Especial e Verificação de E/S são mais eficazes quando usadas em um driver de cada vez.
Se você escolher Selecionar nomes de driver em uma lista, selecione Avançar e selecione um ou mais drivers específicos.
Selecione Concluir e reinicie o computador.
Observação
Ao usar o verificador de driver com as versões do Windows 20150 a 25126, se você selecionou ntoskrnl você pode receber um erro de estado inválido.
Para evitar esse problema, desmarque ntoskrnl ou atualize para uma versão do Windows após a compilação 25126.
Executar o verificador de driver em um prompt de comando
Você também pode executar o Verificador de Driver em uma janela do Prompt de Comando sem iniciar o Gerenciador do Verificador de Driver. Por exemplo, para executar o Verificador de Driver com as configurações padrão em um driver chamado myDriver.sys, você usaria o seguinte comando:
verifier /standard /driver myDriver.sys
Para obter mais informações sobre opções de linha de comando, consulte Driver Verifier Command Syntax.
Como controlar o verificador de driver
Você pode usar o Gerenciador de Verificador de Driver ou uma linha de comando para controlar o Verificador de Driver. Para iniciar o Gerenciador de Verificador de Driver, consulte Como iniciar o Verificador de Driver, anteriormente neste tópico.
Para cada uma das ações a seguir, você pode usar o Gerenciador de Verificador de Driver ou inserir uma linha de comando.
Para parar ou redefinir o Verificador de Driver
No Gerenciador do Verificador de Driver, selecione Excluir configurações existentes e selecione Concluir.
or
Em um prompt de comando, digite o seguinte comando:
verifier /reset
Reinicie o computador.
Para exibir as estatísticas do Verificador de Driver
No Gerenciador do Verificador de Driver, selecione Exibir informações sobre os drivers verificados no momento e selecione Avançar. Continuar a selecionar Avançar exibe informações adicionais.
or
Em um prompt de comando, digite o seguinte comando:
verifier /query
Para exibir as configurações do Verificador de Driver
No Gerenciador do Verificador de Driver, selecione Exibir configurações existentes e selecione Avançar.
or
Em um prompt de comando, digite o seguinte comando:
verifier /querysettings
Como depurar violações do Verificador de Driver
Para obter o máximo benefício do Verificador de Driver, você deve usar um depurador de kernel e conectá-lo ao computador de teste. Para obter uma visão geral das ferramentas de depuração para Windows, consulte Ferramentas de depuração para Windows (WinDbg, KD, CDB, NTSD).
Se o Verificador de Driver detectar uma violação, ele gerará uma verificação de bug para parar o computador. Isso é para fornecer o máximo de informações possíveis para depurar o problema. Quando você tem um depurador de kernel conectado a um computador de teste que está executando o Verificador de Driver e o Verificador de Driver detecta uma violação, o Windows invade o depurador e exibe uma breve descrição do erro.
Todas as violações detectadas pelo Driver Verifier resultam em verificações de bugs. Normalmente, trata-se de uma 0xC4 de Verificação de Bugs. Para obter mais informações, consulte Debugging Bug Check 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION e Bug Check 0xC4: DRIVER_VERIFIER_DETECTED_VIOLATION.
Outros códigos de verificação de bugs comuns incluem o seguinte:
- Verificação de Bug 0xC1: SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION
- Verificação de Bug 0xC6: DRIVER_CAUGHT_MODIFYING_FREED_POOL
- 0xC9 de verificação de bugs: DRIVER_VERIFIER_IOMANAGER_VIOLATION
- Verificação de Bugs 0xD6: DRIVER_PAGE_FAULT_BEYOND_END_OF_ALLOCATION
- Verificação de 0xE6: DRIVER_VERIFIER_DMA_VIOLATION
Para obter mais informações, consulte Manipulando uma verificação de bug quando o verificador de driver está habilitado.
Ao iniciar uma nova sessão de depuração, use o comando de extensão do depurador, !analyze. No modo kernel, o comando !analyze exibe informações sobre a verificação de bug mais recente. Para exibir informações adicionais , para ajudar a identificar o driver com falha, adicione a opção -v ao comando no prompt kd> :
kd> !analyze -v
Além de !analyze, você pode inserir as seguintes extensões do depurador no prompt kd> para exibir informações específicas do Verificador de Driver:
!verificador despeja estatísticas capturadas do Verificador de Driver. Use !verifier -? para exibir todas as opções disponíveis.
kd> !verifier
!deadlock exibe informações relacionadas a bloqueios ou objetos rastreados pelo recurso de detecção de deadlock do Driver Verifier. Use !deadlock -? para exibir todas as opções disponíveis.
kd> !deadlock
!iovirp [endereço] exibe informações relacionadas a um IRP rastreado pelo Verificador de E/S. Por exemplo:
kd> !iovirp 947cef68
Procure a regra de verificação de conformidade DDI que foi violada. (RuleID é sempre o primeiro argumento para a verificação de bugs.) Todas as IDs de regra da verificação de conformidade com DDI estão no formato 0x200nn.
Tópicos relacionados
Opções do verificador de driver
Sintaxe do comando do verificador de driver