Verificador de Driver: Novidades

O Verificador de Driver está disponível em todas as versões do Windows a partir do Windows 2000. Cada versão apresenta novos recursos e verifica se há bugs nos drivers do Windows. Esta seção resume as alterações e fornece links para a documentação relacionada.

Verificador de driver em Windows 11 (atualizado: 30 de setembro de 2021)

Começando com Windows 11, muitos sinalizadores agora estão habilitados sem reinicialização usando uma sintaxe de comando diferente da sintaxe volátil. Consulte Sintaxe de comando do verificador de driver para obter mais informações sobre a nova sintaxe.

Verificador de driver no Windows 10 (atualizado: 8 de maio de 2018)

Importante

Para obter informações sobre como habilitar o Verificador do WDF em Windows 10, versão 1803 ou versões mais recentes, consulte Usando o verificador KMDF.

  • Você ainda pode habilitar a verificação do WDF como parte dos sinalizadores do Verificador de /standard Driver. Confira Sintaxe de comando do verificador de driver para obter mais informações.
  • Essa alteração afetará você se você estiver habilitando o DV com sintaxe /flags 0x209BB , pois a verificação do WDF não será mais habilitada automaticamente.

Começando com Windows 10, o verificador de driver inclui novas regras de validação de driver para as seguintes tecnologias:

Verificador de Driver no Windows 8-1 (atualizado: 17 de junho de 2013)

Começando com Windows 8.1, o Verificador de Driver apresenta quatro novas opções para detectar erros.

Verificador de driver no Windows 8 (atualizado: 20 de outubro de 2012)

A partir do Windows 8, o Verificador de Driver apresenta cinco novas opções para detectar erros.

Ao compilar, implantar e testar o driver usando o Visual Studio 2012 e o WDK para Windows 8, você também pode configurar o Verificador de Driver para ser executado em um computador de teste ao implantar o driver para teste.

Verificador de Driver no Windows 7 (atualizado: 22 de outubro de 2012)

Para o Windows 7, o Verificador de Driver foi aprimorado com novos testes e recursos que permitem ao Verificador de Driver expor mais classes de bugs típicos do driver.

  • Referências incorretas a identificadores de usuário de drivers de kernel
  • Aprimoramentos de verificação de E/S
  • Melhorias especiais de pool, acompanhamento de pool e simulação de poucos recursos
  • Uso incorreto de mecanismos de sincronização
  • Referências de objeto incorretas
  • Encargos de cota de pool da rotina DPC
  • Bloqueios ou atrasos de desligamento do sistema
  • Forçar solicitações de E/S pendentes aprimoradas

No Windows 7, o Verificador de Driver fornece verificações de bloqueios de rotação enfileirados, essas verificações se assemelham às fornecidas para bloqueios de rotação em versões anteriores do Windows. Essas verificações incluem o seguinte:

  • Verificar se uma operação que deve elevar o valor irql (nível de solicitação de interrupção), como KeAcquireInStackQueuedSpinLock, não está realmente reduzindo o valor irql.

  • Verificar se uma operação que deve reduzir o valor irql, como KeReleaseInStackQueuedSpinLock, não está realmente elevando o valor IRQL.

  • Corte do conjunto de trabalho do processo do sistema se a opção Forçar Verificação de IRQL estiver habilitada, quando o IRQL estiver sendo gerado para DISPATCH_LEVEL ou superior, na tentativa de expor possíveis referências à memória paginável enquanto o driver está sendo executado em IRQL elevado.

  • Prever possíveis deadlocks quando a opção Detecção de Deadlock estiver habilitada.

  • Tentar usar o mesmo KSPIN_LOCK estrutura de dados como um bloqueio de rotação e como um bloqueio de rotação na fila de pilha quando a opção Detecção de Deadlock está habilitada.

  • Verificando valores de ponteiro obviamente incorretos, como um endereço virtual no modo de usuário que é usado como um endereço de bloqueio de rotação.

  • Registro em log de transições IRQL no log IRQL do Verificador de Driver. Essas informações aparecem quando você usa a extensão !verifier 8 dos Depuradores do Windows. Confira !verificador.

Informações adicionais de depuração

No Windows 7, o Verificador de Driver fornece as seguintes informações adicionais que são úteis para depuração:

Há um log com rastreamentos de pilha em ordem cronológica para chamadas recentes para KeEnterCriticalRegion e KeLeaveCriticalRegion de drivers verificados. O conteúdo do log é exibido usando o verificador !0x200 extensão do depurador dos Depuradores do Windows. Essas informações podem ser úteis para entender cenários em que um thread está sendo executado inesperadamente em uma região crítica ou está tentando deixar uma região crítica que ele já deixou.

Você pode exibir informações adicionais do Log de Solicitações de E/S Pendentes usando a extensão !verifier 0x40 depurador. Em versões anteriores do Windows, o log continha apenas um rastreamento de pilha para cada IRP que o Verificador de Driver forçou a estar pendente. Esse foi o rastreamento de pilha da época em que IoCompleteRequest foi chamado pela primeira vez para o IRP pendente forçado. O Windows 7 tem pelo menos duas entradas de log, possivelmente mais de duas, para cada IRP pendente forçado:

  • Rastreamento de pilha no momento em que o Verificador de Driver escolheu o IRP para ser forçado pendente. O Verificador de Driver escolhe alguns dos IRPs a serem forçados pendentes quando um dos drivers verificados chama IoCallDriver.
  • Rastreamentos de pilha para cada chamada IoCompleteRequest para o IRP pendente forçado antes que a conclusão atinja o driver verificado. Mais de uma chamada IoCompleteRequest pode existir para o mesmo IRP porque um dos drivers pode interromper temporariamente a conclusão de sua rotina de conclusão e, em seguida, retomá-la chamando IoCompleteRequest novamente.

Há rastreamentos de pilha mais válidos no log de Transição do IRQL. Esse log é exibido usando !verifier 8. Em versões do Windows anteriores ao Windows 7, o Verificador de Driver poderia ter tentado registrar alguns desses rastreamentos de pilha em IRQL elevado e não conseguiu capturar o rastreamento de pilha devido ao alto valor de IRQL. No Windows 7, o Verificador de Driver tenta capturar esses rastreamentos de pilha:

  • Antes de gerar o IRQL, por exemplo, quando um driver verificado chama KeAcquireSpinLock.
  • Depois que o IRQL é reduzido, quando um driver verificado chama KeReleaseSpinLock.

Dessa forma, o Verificador de Driver pode capturar mais desses rastreamentos de pilha de transição IRQL.

!analyze pode fazer a triagem de problemas expostos pelas verificações avançadas do Verificador de E/S (que fazem parte do Verificador de E/S no Windows 7). Em versões anteriores do Windows, o relatório de erros do Verificador avançado de E/S consistia em exibir uma descrição do defeito do driver detectado pelo Verificador de Driver seguido por uma quebra no depurador. A execução de !analyze após essa interrupção não resulta em uma triagem significativa para muitas dessas quebras porque !analyze não pode usar as informações do texto de descrição do erro que aparece no depurador. No Windows 7, as informações significativas sobre esses defeitos de driver são salvas pelo Verificador de Driver na memória. !analyze pode encontrar essas informações e executar uma triagem automática muito mais significativa para muitas dessas quebras.

Verificador de Driver no Windows Vista (atualizado: 9 de fevereiro de 2009)

Para o Windows Vista, o Verificador de Driver foi aprimorado com novos testes e recursos.

  • Habilitando o verificador de driver e alterando as configurações sem reinicializar
  • Simulação avançada de poucos recursos
  • Forçar solicitações de E/S pendentes
  • Verificações de segurança
  • Verificação de E/S mais completa
  • Verificação de IRQL aprimorada
  • Verificações diversas
  • Rastreamento de página de memória bloqueada
  • Verificações automáticas adicionais

Verificador de driver no Windows XP (atualizado: 4 de dezembro de 2001)

O Verificador de Driver é uma ferramenta para monitorar drivers de modo kernel do Windows e drivers gráficos. A Microsoft incentiva fortemente os fabricantes de hardware a testar seus drivers com o Verificador de Driver para garantir que os drivers não estejam fazendo chamadas de função ilegais ou causando corrupção do sistema. O Verificador de Driver foi aprimorado com novos testes e recursos para o Microsoft Windows XP.

Os drivers enviados ao WHQL para teste devem passar pelo Verificador de Driver. Os novos recursos do Verificador de Driver no Windows XP incluem:

  • Gerenciador de Verificador de Driver, uma NOVA GUI (interface gráfica do usuário) para verifier.exe
  • Novo marcar automático para monitoramento de alternância de pilha
  • Novas opções do Verificador de Driver para Verificação de DMA (também conhecida como Verificação HAL), Detecção de Deadlock e Verificação de SCSI
  • Alterações de verificação de E/S que combinam testes de "Nível 1" e "Nível 2", testes opcionais de Verificação de E/S Avançada
  • Novas extensões de depurador !deadlock e !dma
  • Novas verificações de bugs: 0xE6 (DRIVER_VERIFIER_DMA_VIOLATION) e 0xF1 (SCSI_VERIFIER_DETECTED_VIOLATION)
  • Subcódigos adicionais para os códigos de marcar de bugs existentes 0xC4 e 0xC9

Os recursos do Verificador de Driver também incluem:

  • Novas opções de linha de comando do Verificador O utilitário verifier.exe tem um novo parâmetro, VolatileDriverList, que pode ser usado com o palavra-chave /adddriver para especificar uma lista de drivers a serem adicionados às configurações voláteis. VolatileDriverList pode ser usado com o palavra-chave /removedriver para especificar uma lista de drivers a serem removidos.

  • Novas extensões do verificador ! As novas extensões do verificador ! exibem informações de log adicionais ao monitorar recursos baixos ou aumentos de IRQL e bloqueios de rotação. A ajuda online também está disponível.

    • Sinalizadores definidos com 0x4 faz com que a exibição inclua um log de falhas injetadas pelo Verificador de Driver durante a simulação de poucos recursos
    • Os sinalizadores definidos com 0x8 fazem com que a exibição inclua um log das alterações IRQL mais recentes feitas pelos drivers que estão sendo verificados
    • Se Flags for igual a exatamente 0x4 ou 0x8, o parâmetro Quantity especificará o número de registros ou entradas de log a serem incluídos na exibição
    • O parâmetro ? mostra um breve texto de ajuda
  • A Ajuda Online para o Gerenciador de Verificador de Driver Online Ajuda online para o Gerenciador de Verificador de Driver pode ser exibida de qualquer uma das seguintes maneiras:

    • Selecione e segure (ou clique com o botão direito do mouse) em um item na janela Gerenciador do Verificador de Driver e escolha O que é isso? no menu pop-up.
    • Selecione o ponto de interrogação (?) no canto superior direito da janela e selecione um item na janela Gerenciador do Verificador de Driver.