Partilhar via


Opções e classes de regras do Verificador de Driver

Este tópico descreve os recursos opcionais e as classes de regras no Verificador de Driver. Consulte Configurações padrão para obter a lista de opções incluídas quando você usa as configurações padrão.

Observação

Algumas verificações automáticas são sempre realizadas em um driver que está sendo verificado, independentemente das opções selecionadas. Se o driver usa memória em um IRQL impróprio, chama ou libera incorretamente bloqueios de rotação e alocações de memória, alterna incorretamente pilhas ou libera pool de memória sem primeiro remover temporizadores, o Verificador de Driver detetará esse comportamento. Quando o driver é descarregado, o Verificador de Driver verificará se ele liberou corretamente seus recursos.

Habilitando classes de regras com /ruleclasses

A partir do Windows 10, versão 17627 e posterior, você pode habilitar classes de regras com a seguinte sintaxe:

/ruleclasses or /rc [<ruleclass_1> <ruleclass_2> ... <ruleclass_k>]

Observe que, ao habilitar várias classes (representadas pelo inteiro decimal positivo abaixo), separe cada inteiro com um caractere de espaço.

As descrições para essas classes de regras podem ser encontradas abaixo.

Classes de regras padrão

Classe de regra Decimal ID
Piscina especial 1
Forçar verificação IRQL 2
Rastreamento de piscinas 4
Verificação de E/S 5
Deteção de bloqueio 6
Verificação DMA 8
Controlos de segurança 9
Controlos diversos 12
Verificação de conformidade DDI 18
Verificação WDF 34

Classes de regras adicionais

Essas classes de regras destinam-se a testes de cenário específicos. As classes de regras são marcadas com (*) requerem Verificação de E/S (5) que será ativada automaticamente. As bandeiras marcadas com (**) suportam a desativação de regras individuais.

Classe de regra Identificação Decimal
Simulação aleatória de baixos recursos 3
Forçar pedidos de E/S pendentes (*) 10
Registo IRP 11
Verificação de MDL invariante para pilha (*) 14
Verificação de MDL invariante para driver (*) 15
Difusão de atraso da estrutura de alimentação 16
Verificação da interface porta/miniporta 17
Simulação sistemática de baixos recursos 19
Verificação de conformidade DDI (adicional) 20
Teste de fuzzing para atraso de sincronização do kernel 24
Verificação do comutador VM 25
Verificações de integridade de código 26
Verificações de isolamento do motorista (requer 36) 33
Verificação adicional de IRQL 35
Ativar DIF 36

Descrições opcionais de classes de recursos e regras

Piscina Especial

Quando essa opção está ativada, o Verificador de Driver aloca a maioria das solicitações de memória do driver de um pool especial. Esse pool especial é monitorizado para sobrecargas de memória, subutilizações de memória e memória que é acedida depois de libertada.

Forçar verificação IRQL

Quando esta opção está ativada, o Driver Verifier coloca extrema pressão de memória no driver ao invalidar o código paginável. Se o driver tentar acessar a memória paginada no IRQL errado ou enquanto mantém um bloqueio de rotação, o Verificador de Driver deteta esse comportamento.

Simulação de Baixos Recursos (chamada Simulação Randomizada de Recursos Baixos no Windows 8.1)

Quando essa opção está habilitada, o Verificador de Driver falha aleatoriamente nas solicitações de alocação de pool e outras solicitações de recursos. Ao injetar essas falhas de alocação no sistema, o Driver Verifier testa a capacidade do motorista de lidar com uma situação de poucos recursos.

Rastreamento de piscina

Quando essa opção está ativada, o Verificador de Driver verifica se o driver liberou todas as suas alocações de memória quando é descarregado. Isso revela vazamentos de memória.

Verificação de E/S

Quando essa opção está ativa, o Driver Verifier aloca os IRPs do driver de um pool especial e monitora o manuseio de I/O do driver. Isso deteta o uso ilegal ou inconsistente de rotinas de E/S.

Deteção de bloqueio

Quando essa opção está ativa, o Driver Verifier monitora o uso de spin locks, mutexes e mutexes rápidos pelo driver. Isso deteta se o código do driver tem o potencial de causar um impasse em algum momento.

Verificação de E/S aprimorada

Quando essa opção está ativa, o Verificador de Driver monitora as chamadas de várias rotinas do Gerenciador de E/S e realiza testes de estresse de IRPs PnP, IRPs de alimentação e IRPs WMI. No Windows 7 e versões posteriores do sistema operacional Windows, todos os recursos da Verificação de E/S Aprimorada estão incluídos como parte da Verificação de E/S e não está mais disponível nem é necessário selecionar essa opção no Gerenciador de Verificadores de Driver ou na linha de comando.

Verificação DMA

Quando essa opção está ativa, o Verificador de Driver monitora o uso de rotinas DMA pelo driver. Isso deteta o uso inadequado de buffers, adaptadores e registros de mapa DMA.

Verificações de segurança

(Windows Vista e posterior) Quando essa opção está ativa, o Verificador de Driver procura erros comuns que podem resultar em vulnerabilidades de segurança, como uma referência a endereços de modo de usuário por rotinas de modo kernel.

Controlos diversos

(Windows Vista e posterior) Quando essa opção está ativa, o Verificador de Driver procura causas comuns de falhas de driver, como o manuseio incorreto da memória liberada.

Forçar solicitações de E/S pendentes

(Windows Vista e posterior) Quando esta opção está ativa, o Verificador de Driver testa a resposta do driver aos valores de retorno STATUS_PENDING, devolvendo STATUS_PENDING para as chamadas aleatórias para IoCallDriver.

Registo IRP

(Windows Server 2003 e posterior) Quando essa opção está ativa, o Verificador de Driver monitora o uso de IRPs por um driver e cria um log de uso de IRP.

Verificação Storport

(Windows Vista e posterior) Quando essa opção está ativa, o Verificador de Driver monitora um driver de miniporta Storport quanto ao uso indevido de rotinas Storport exportadas, atrasos excessivos e tratamento inadequado de solicitações Storport.

Fuzzing de atraso do Power Framework

(A partir do Windows 8) Quando essa opção está ativa, o Verificador de Driver randomiza agendamentos de threads para ajudar a eliminar erros de simultaneidade nos drivers que usam a estrutura de gerenciamento de energia (PoFx). Esta opção não é recomendada para drivers que não utilizam diretamente a estrutura de gerenciamento de energia (PoFx)..

Verificação de conformidade DDI

(A partir do Windows 8) Quando essa opção está ativa, o Verificador de Driver aplica um conjunto de regras de interface de driver de dispositivo (DDI) que verificam a interação adequada entre um driver e a interface do kernel do sistema operacional.

Verificação de MDL invariante para pilha

(A partir do Windows 8) 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.

Verificação MDL invariante para driver

(A partir do Windows 8) A opção Invariant MDL Checking for Driver monitora como o driver lida com buffers MDL invariantes por driver. Esta opção deteta a modificação ilegal de buffers MDL invariantes. Para usar essa opção, você deve habilitar a Verificação de E/S em pelo menos um driver.

Injeção de falha baseada em pilha

(Disponível apenas com Windows 8 e WDK 8) A opção Stack Based Failure Injection injeta falhas de recursos em drivers de modo kernel. Esta opção usa um driver especial, KmAutoFail.sys, em conjunto com o Verificador de Drivers para investigar os caminhos de tratamento de erros do driver.

Simulação sistemática de baixos recursos

(A partir do Windows 8.1) A opção de simulação sistemática de baixos recursos injeta falhas de recursos em drivers de modo kernel.

Verificação NDIS/WIFI

(A partir do Windows 8.1) Quando essa opção está ativa, o Verificador de Driver aplica um conjunto de regras NDIS e LAN sem fio (WIFI) que verificam a interação adequada entre um driver de miniporta NDIS e o kernel do sistema operacional.

Difusão do atraso de sincronização do kernel

(A partir do Windows 8.1) Esta opção randomiza as sequências de threads para ajudar a detectar bugs de concorrência nos drivers.

Verificação do Switch de VM

(A partir do Windows 8.1) Esta opção monitoriza controladores de filtro (extensões de comutador extensíveis) que são executados dentro do Comutador ExtensívelHyper-V.

Verificação da interface de porta/miniporta

A verificação da interface de porta/miniporta permite que o Driver Verifier inspecione a interface DDI entre PortCls.sys e seus drivers de miniporta de áudio, juntamente com ks.sys e seus drivers de miniporta AVStream. Consulte as regras para controladores AVStream e as regras para controladores de áudio.

Verificação da integridade do código

Ao usar a segurança baseada em virtualização para isolar a Integridade do Código, a única maneira pela qual a memória do kernel pode se tornar executável é por meio de uma verificação da Integridade do Código. Isso significa que as páginas de memória do kernel nunca podem ser graváveis e executáveis (W+X) e o código executável não pode ser modificado diretamente. As verificações de integridade do código garantem a compatibilidade dessas regras de integridade do código e detetam violações.

Verificação WDF

A Verificação WDF verifica se um driver de modo kernel está seguindo os requisitos do Kernel-Mode Driver Framework (KMDF) corretamente.

Verificação adicional de IRQL

A verificação adicional de IRQL amplifica as regras de verificação de conformidade do DDI para o PASSIVE_LEVEL. Consiste em duas regras:

  • A regra IrqlIoRtlZwPassive especifica que o driver chama as Interfaces de Programação de Dispositivos (DDIs) listadas na regra apenas quando está a executar em IRQL = PASSIVE_LEVEL.
  • A regra IrqlNtifsApcPassive especifica que o driver chama as DDIs listadas na regra somente quando está sendo executado em IRQL = PASSIVE_LEVEL ou em IRQL <= APC_LEVEL.

Verificações de isolamento do driver

As verificações de isolamento de driver são essenciais para validar os requisitos de isolamento do pacote de driver de tempo de execução dos drivers do Windows. Para obter mais informações, consulte Introdução ao desenvolvimento de drivers do Windows. O verificador monitoriza operações de leitura e escrita no registo que não são permitidas para pacotes de drivers isolados.

Configurações padrão

Opções incluídas nas configurações padrão

Piscina Especial

Forçar verificação IRQL

Rastreamento de piscina

Verificação de E/S

Deteção de impasse

Verificação de E/S aprimorada (no Windows 7 e posterior, essa opção é ativada automaticamente quando você seleciona Verificação de E/S)

Verificação DMA

Verificações de segurança

Verificações diversas (Windows Vista e posteriores)

Verificação de conformidade DDI (a partir do Windows 8)

Opções do Verificador de Driver que exigem Verificação de E/S

Há quatro opções que exigem que você habilite primeiro a Verificação de E/S. Se a Verificação de E/S não estiver habilitada, essas opções não serão habilitadas.