Options et classes de règles du vérificateur de pilote

Cette rubrique décrit les fonctionnalités facultatives et les classes de règles dans Driver Verifier. Consultez Paramètres standard pour obtenir la liste des options incluses lorsque vous utilisez les paramètres standard.

Notes

Certaines vérifications automatiques sont toujours effectuées sur un pilote en cours de vérification, quelles que soient les options sélectionnées. Si le pilote utilise la mémoire à un NIVEAU IRQL incorrect, appelle ou libère incorrectement des verrous de rotation et des allocations de mémoire, change de pile de manière incorrecte ou libère le pool de mémoire sans supprimer d’abord les minuteurs, le vérificateur de pilotes détecte ce comportement. Lorsque le pilote est déchargé, le vérificateur de pilotes case activée pour vérifier qu’il a correctement libéré ses ressources.

Activation des classes de règles avec /ruleclasses

À partir de Windows 10, version 17627 et ultérieures, vous pouvez activer les classes de règles avec la syntaxe suivante :

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

Notez que lors de l’activation de plusieurs classes (représentées par l’entier décimal positif ci-dessous), séparez chaque entier par un espace.

Vous trouverez ci-dessous des descriptions de ces classes de règles.

Classes de règles standard

Classe Rule ID décimal
Pool spécial 1
Forcer la vérification IRQL 2
Suivi du pool 4
Vérification des E/S 5
Détection des interblocages 6
Vérification DMA 8
Vérifications de sécurité 9
Vérifications diverses 12
Vérification de la conformité DDI 18
Vérification WDF 34

Classes de règles supplémentaires

Ces classes de règles sont destinées à des tests de scénarios spécifiques. Les classes de règle sont marquées avec (*) nécessitent une vérification d’E/S (5) qui sera automatiquement activée. Les indicateurs marqués avec (**) prennent en charge la désactivation de règles individuelles.

Classe Rule ID décimal
Simulation aléatoire de faibles ressources 3
Forcer les demandes d’E/S en attente (*) 10
Journalisation IRP 11
Vérification mdL invariante pour la pile (*) 14
Vérification mdL invariante pour le pilote (*) 15
Fuzzing différé de Power Framework 16
Vérification de l’interface port/miniport 17
Simulation systématique de faibles ressources 19
Vérification de la conformité DDI (supplémentaire) 20
Fuzzing du délai de synchronisation du noyau 24
Vérification du commutateur de machine virtuelle 25
Vérifications de l’intégrité du code 26
Vérifications d’isolation des pilotes (nécessite 36) 33
Vérification IRQL supplémentaire 35
Activer DIF 36

Descriptions facultatives des fonctionnalités et des classes de règles

Pool spécial

Lorsque cette option est activée, Driver Verifier alloue la plupart des demandes de mémoire du pilote à partir d’un pool spécial. Ce pool spécial est surveillé pour détecter les dépassements de mémoire, les sous-exécutions de mémoire et la mémoire accessible après sa libération.

Forcer la vérification IRQL

Lorsque cette option est activée, driver Verifier exerce une pression de mémoire extrême sur le pilote en invalidant le code paginable. Si le pilote tente d’accéder à la mémoire paginée à un IRQL incorrect ou en maintenant un verrou de rotation, le vérificateur de pilotes détecte ce comportement.

Simulation de ressources faibles (appelée simulation aléatoire de faibles ressources dans Windows 8.1)

Lorsque cette option est activée, driver Verifier échoue de façon aléatoire aux demandes d’allocation de pool et autres demandes de ressources. En injectant ces erreurs d’allocation dans le système, driver verifier teste la capacité du pilote à faire face à une situation de faible ressource.

Suivi du pool

Lorsque cette option est activée, le vérificateur de pilotes vérifie si le pilote a libéré toutes ses allocations de mémoire lorsqu’il est déchargé. Cela révèle des fuites de mémoire.

Vérification des E/S

Lorsque cette option est active, driver Verifier alloue les IRP du pilote à partir d’un pool spécial et surveille la gestion des E/S du pilote. Cela détecte l’utilisation illégale ou incohérente des routines d’E/S.

Détection des interblocages

Lorsque cette option est active, le vérificateur de pilotes surveille l’utilisation par le pilote des verrous de rotation, des mutex et des mutex rapides. Cela détecte si le code du pilote est susceptible de provoquer un blocage à un moment donné.

Vérification d’E/S améliorée

Lorsque cette option est active, le vérificateur de pilotes surveille les appels de plusieurs routines du Gestionnaire d’E/S et effectue des tests de contrainte sur les IRP PnP, les IRP d’alimentation et les IRP WMI. Dans Windows 7 et les versions ultérieures du système d’exploitation Windows, toutes les fonctionnalités de vérification d’E/S améliorée sont incluses dans le cadre de la vérification des E/S et il n’est plus disponible ni nécessaire de sélectionner cette option dans le Gestionnaire du vérificateur de pilotes ou à partir de la ligne de commande.

Vérification DMA

Lorsque cette option est active, le vérificateur de pilotes surveille l’utilisation des routines DMA par le pilote. Cela détecte une utilisation incorrecte des mémoires tampons, des adaptateurs et des registres de mappage DMA.

Vérifications de sécurité

(Windows Vista et versions ultérieures) Lorsque cette option est active, Driver Verifier recherche les erreurs courantes qui peuvent entraîner des vulnérabilités de sécurité, telles qu’une référence aux adresses en mode utilisateur par des routines en mode noyau.

Vérifications diverses

(Windows Vista et versions ultérieures) Lorsque cette option est active, Driver Verifier recherche les causes courantes des blocages du pilote, telles que la mauvaise gestion de la mémoire libérée.

Forcer les demandes d’E/S en attente

(Windows Vista et versions ultérieures) Lorsque cette option est active, Driver Verifier teste la réponse du pilote à STATUS_PENDING valeurs de retour en retournant STATUS_PENDING pour les appels aléatoires à IoCallDriver.

Journalisation IRP

(Windows Server 2003 et versions ultérieures) Lorsque cette option est active, driver Verifier surveille l’utilisation par un pilote des IRPs et crée un journal de l’utilisation d’IRP.

Vérification Storport

(Windows Vista et versions ultérieures) Lorsque cette option est active, driver verifier surveille un pilote Storport miniport pour l’utilisation incorrecte des routines Storport exportées, les retards excessifs et la gestion incorrecte des demandes Storport.

Fuzzing différé de Power Framework

(À compter de Windows 8) Lorsque cette option est active, Driver Verifier aléatoire les planifications de threads pour aider à éliminer les erreurs d’accès concurrentiel dans les pilotes qui utilisent l’infrastructure de gestion de l’alimentation (PoFx) . Cette option n’est pas recommandée pour les pilotes qui n’utilisent pas directement l’infrastructure de gestion de l’alimentation (PoFx).

Vérification de la conformité DDI

(À compter de Windows 8) Lorsque cette option est active, Driver Verifier applique un ensemble de règles d’interface de pilote de périphérique (DDI) qui case activée pour l’interaction appropriée entre un pilote et l’interface du noyau du système d’exploitation.

Vérification MDL invariante pour stack

(À compter de Windows 8) L’option Invariant MDL Checking for Stack surveille la façon dont le pilote gère les tampons MDL invariants dans la pile de pilotes. Le vérificateur de pilotes peut détecter la modification illégale de mémoires tampons MDL invariantes. Pour utiliser cette option, la vérification des E/S doit être activée sur au moins un pilote.

Vérification MDL invariante pour le pilote

(À compter de Windows 8) L’option Invariant MDL Checking for Driver surveille la façon dont le pilote gère les mémoires tampons MDL invariantes par pilote. Cette option détecte la modification illégale des tampons MDL invariants. Pour utiliser cette option, vous devez activer la vérification des E/S sur au moins un pilote.

Injection d’échec basée sur la pile

(Disponible uniquement avec Windows 8 et WDK 8) L’option Injection d’échec basée sur la pile injecte les échecs de ressources dans les pilotes en mode noyau. Cette option utilise un pilote spécial, KmAutoFail.sys, conjointement avec Driver Verifier pour pénétrer les chemins de gestion des erreurs du pilote.

Simulation systématique de faibles ressources

(À compter de Windows 8.1) L’option de simulation systématique de faibles ressources injecte les défaillances de ressources dans les pilotes en mode noyau.

Vérification NDIS/WIFI

(À compter de Windows 8.1) Lorsque cette option est active, driver verifier applique un ensemble de règles NDIS et LAN sans fil (WIFI) qui case activée pour une interaction appropriée entre un pilote miniport NDIS et le noyau du système d’exploitation.

Fuzzing du retard de synchronisation du noyau

(À compter de Windows 8.1) Cette option aléatoire les planifications de threads pour aider à détecter les bogues d’accès concurrentiel dans les pilotes.

Vérification du commutateur de machine virtuelle

(À compter de Windows 8.1) Cette option surveille les pilotes de filtre (extensions de commutateur extensible) qui s’exécutent à l’intérieur du commutateur extensible Hyper-V.

Vérification de l’interface port/miniport

La vérification de l’interface port/miniport permet au vérificateur de pilotes d’inspecter l’interface DDI entre PortCls.sys et ses pilotes de miniport audio, ainsi que ks.sys et ses pilotes de miniport AVStream. Consultez Règles pour les pilotes AVStream et Règles pour les pilotes audio.

Vérification de l’intégrité du code

Lorsque vous utilisez la sécurité basée sur la virtualisation pour isoler l’intégrité du code, la seule façon dont la mémoire du noyau peut devenir exécutable consiste à vérifier l’intégrité du code. Cela signifie que les pages de mémoire du noyau ne peuvent jamais être accessibles en écriture et exécutables (W+X) et que le code exécutable ne peut pas être modifié directement. Les vérifications d’intégrité du code garantissent la compatibilité de ces règles d’intégrité du code et détectent les violations.

Vérification WDF

La vérification WDF vérifie si un pilote en mode noyau suit correctement les exigences du Kernel-Mode Driver Framework (KMDF).

Vérification IRQL supplémentaire

La vérification IRQL supplémentaire augmente les règles IRQL de vérification de conformité DDI pour PASSIVE_LEVEL. Il se compose de deux règles :

  • La règle IrqlIoRtlZwPassive spécifie que le pilote appelle les DDIs répertoriés dans la règle uniquement lorsqu’il s’exécute à IRQL = PASSIVE_LEVEL.
  • La règle IrqlNtifsApcPassive spécifie que le pilote appelle les DDIs répertoriés dans la règle uniquement lorsqu’il s’exécute à l’adresse IRQL = PASSIVE_LEVEL ou à IRQL <= APC_LEVEL.

Vérifications d’isolation des pilotes

Les vérifications d’isolation des pilotes sont essentielles pour valider les exigences d’isolation du package de pilotes runtime des pilotes Windows Pour plus d’informations, consultez Prise en main des pilotes Windows. Les vérifications surveillent les lectures et les écritures du Registre qui ne sont pas autorisées pour les packages de pilotes isolés.

Paramètres standard

Options incluses dans les paramètres standard

Pool spécial

Forcer la vérification IRQL

Suivi du pool

Vérification des E/S

Détection des interblocages

Vérification d’E/S améliorée (dans Windows 7 et versions ultérieures, cette option est automatiquement activée lorsque vous sélectionnez Vérification des E/S)

Vérification DMA

Vérifications de sécurité

Vérifications diverses (Windows Vista et versions ultérieures)

Vérification de la conformité DDI (à partir de Windows 8)

Options du vérificateur de pilotes qui nécessitent la vérification des E/S

Il existe quatre options qui vous obligent à activer d’abord la vérification des E/S. Si la vérification des E/S n’est pas activée, ces options ne sont pas activées.