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

Este tópico descreve os recursos opcionais e as classes de regra 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 executadas em um driver que está sendo verificado, independentemente de quais opções foram selecionadas. Se o driver usa memória em um IRQL inadequado, chama ou libera incorretamente bloqueios de rotação e alocações de memória, alterna incorretamente pilhas ou libera o pool de memória sem primeiro remover temporizadores, o Verificador de Driver detectará esse comportamento. Quando o driver for descarregado, o Verificador de Driver marcar para ver se ele liberou corretamente seus recursos.

Habilitar classes de regra com /ruleclasses

A partir de Windows 10, versão 17627 e posterior, você pode habilitar classes de regra 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 dessas classes de regra podem ser encontradas abaixo.

Classes de regra padrão

Classe rule Decimal ID
Pool especial 1
Forçar a verificação do IRQL 2
Acompanhamento de pool 4
Verificação de E/S 5
Detecção de deadlock 6
Verificação de DMA 8
Verificações de segurança 9
Verificações diversas 12
Verificação de conformidade de DDI 18
Verificação do WDF 34

Classes de regra adicionais

Essas classes de regra destinam-se a testes de cenário específicos. As classes de regra são marcadas com (*) exigem verificação de E/S (5) que será habilitada automaticamente. Sinalizadores marcados com (**) dão suporte à desabilitação de regras individuais.

Classe rule Decimal ID
Simulação aleatória de poucos recursos 3
Forçar solicitações de E/S pendentes (*) 10
Registro em log do IRP 11
Verificação invariável de MDL para pilha (*) 14
Verificação invariável de MDL para driver (*) 15
Desativação de atraso do Power Framework 16
Verificação da interface de porta/miniport 17
Simulação sistemática de baixos recursos 19
Verificação de conformidade de DDI (adicional) 20
Atraso na sincronização do kernel 24
Verificação do comutador de VM 25
Verificações de integridade do código 26
Verificações de isolamento do driver (requer 36) 33
Verificação irql adicional 35
Habilitar DIF 36

Descrições opcionais de recurso e classe de regra

Pool Especial

Quando essa opção está habilitada, o Verificador de Driver aloca a maioria das solicitações de memória do driver de um pool especial. Esse pool especial é monitorado para estouros de memória, subexecutação de memória e memória que é acessada depois que ele é liberado.

Forçar verificação de IRQL

Quando essa opção está habilitada, o Verificador de Driver coloca uma pressão de memória extrema no driver invalidando o código paginável. Se o driver tentar acessar a memória paginada no IRQL errado ou mantendo um bloqueio de rotação, o Verificador de Driver detectará esse comportamento.

Simulação de recursos baixos (chamada de simulação aleatória de recursos baixos em Windows 8.1)

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

Acompanhamento de pool

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

Verificação de E/S

Quando essa opção está ativa, o Verificador de Driver aloca os IRPs do driver de um pool especial e monitora a manipulação de E/S do driver. Isso detecta o uso ilegal ou inconsistente de rotinas de E/S.

Detecção de deadlock

Quando essa opção está ativa, o Verificador de Driver monitora o uso do driver de bloqueios de rotação, mutexes e mutexes rápidos. Isso detecta se o código do driver tem o potencial de causar um deadlock 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 executa testes de estresse de IRPs PnP, IRPs de energia e IRPs WMI. No Windows 7 e versões posteriores do sistema operacional Windows, todos os recursos da Verificação avançada de E/S são incluídos como parte da Verificação de E/S e não estão mais disponíveis nem necessários para selecionar essa opção no Gerenciador de Verificador de Driver ou na linha de comando.

Verificação de DMA

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

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 no modo de usuário por rotinas do modo kernel.

Verificações diversas

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

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

(Windows Vista e posterior) Quando essa opção estiver ativa, o Verificador de Driver testará a resposta do driver para STATUS_PENDING retornar valores retornando STATUS_PENDING para chamadas aleatórias para IoCallDriver.

Log do 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 do IRP.

Verificação do Storport

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

Fuzzing de atraso do Power Framework

(Começando com Windows 8) Quando essa opção está ativa, o Verificador de Driver randomiza agendamentos de thread para ajudar a eliminar erros de simultaneidade nos drivers que usam a PoFx (estrutura de gerenciamento de energia). Essa opção não é recomendada para drivers que não utilizam diretamente a PoFx (estrutura de gerenciamento de energia).

Verificação de conformidade de DDI

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

Verificação invariável de MDL para pilha

(Começando com Windows 8) 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ção ilegal de buffers de MDL invariáveis. Para usar essa opção, a Verificação de E/S deve ser habilitada em pelo menos um driver.

Verificação de MDL invariável para driver

(Começando com Windows 8) A opção Verificação Invariável de MDL para Driver monitora como o driver lida com buffers MDL invariáveis por driver. Essa opção detecta modificação ilegal de buffers de MDL invariáveis. 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 Injeção de Falha Baseada em Pilha injeta falhas de recurso em drivers de modo kernel. Essa opção usa um driver especial, KmAutoFail.sys, em conjunto com o Verificador de Driver para penetrar nos caminhos de tratamento de erros do driver.

Simulação sistemática de baixos recursos

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

Verificação NDIS/WIFI

(Começando com Windows 8.1) Quando essa opção está ativa, o Verificador de Driver aplica um conjunto de regras de WIFI (NDIS e LAN sem fio) que marcar para a interação adequada entre um driver de miniporte NDIS e o kernel do sistema operacional.

Atraso na sincronização do kernel

(Começando com Windows 8.1) Essa opção randomiza agendamentos de thread para ajudar a detectar bugs de simultaneidade em drivers.

Verificação do comutador de VM

(Começando com Windows 8.1) Essa opção monitora drivers de filtro (extensíveis de extensões) executados dentro do Comutador Extensível do Hyper-V.

Verificação de interface de porta/miniport

A verificação de interface de porta/miniporto permite que o Verificador de Driver inspecione a interface DDI entre PortCls.sys e seus drivers de miniporto de áudio, juntamente com ks.sys e seus drivers de miniport a AVStream. Consulte Regras para drivers AVStream e Regras para drivers de áudio.

Verificação de integridade do código

Ao usar a segurança baseada em virtualização para isolar a Integridade do Código, a única maneira de a memória do kernel se tornar executável é por meio de uma verificação de integridade de 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 de código garantem a compatibilidade dessas regras de integridade de código e detectam violações.

Verificação do WDF

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

Verificação irql adicional

A verificação irql adicional aumenta as regras IRQL de Verificação de Conformidade da DDI para PASSIVE_LEVEL. Ele consiste em duas regras:

  • A regra IrqlIoRtlZwPassive especifica que o driver chama os DDIs listados na regra somente quando está sendo executado em IRQL = PASSIVE_LEVEL.
  • A regra IrqlNtifsApcPassive especifica que o driver chama os DDIs listados na regra somente quando está executando em IRQL = PASSIVE_LEVEL ou em IRQL <= APC_LEVEL.

Verificações de isolamento do driver

As verificações de isolamento do driver são essenciais para validar os requisitos de isolamento do pacote de driver de runtime dos Drivers do Windows Para obter mais informações, consulte Introdução aos Drivers do Windows. As verificações monitoram leituras e gravações do Registro que não são permitidas para pacotes de driver isolados.

Configurações padrão

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

Pool Especial

Forçar verificação de IRQL

Acompanhamento de pool

Verificação de E/S

Detecção de deadlock

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

Verificação de DMA

Verificações de segurança

Verificações diversas (Windows Vista e posterior)

Verificação de conformidade de DDI (começando com Windows 8)

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

Há quatro opções que exigem que você primeiro habilite 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.