DetailPage-MSS-KB

Base de connaissances

Numéro d'article: 244617 - Dernière mise à jour: vendredi 17 juin 2005 - Version: 5.1

Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
Important Cet article contient des informations sur la modification du Registre. Avant de modifier le Registre, faites-en une sauvegarde et vérifiez que vous savez comment le restaurer en cas de problème. Pour plus d'informations sur la sauvegarde, la restauration et la modification du Registre, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
256986  (http://support.microsoft.com/kb/256986/ ) Description du Registre de Microsoft Windows

Sommaire

Résumé

Le vérificateur de pilotes est inclus dans Windows 2000, Windows XP et Windows Server 2003 afin d'améliorer la stabilité et la fiabilité ; vous pouvez utiliser cet outil pour résoudre des problèmes de pilote. Les composants en mode noyau de Windows peuvent endommager le système ou entraîner des défaillances système si un pilote n'est pas écrit correctement, notamment une version antérieure du pilote WDM (Windows Driver Model). Cet article explique comment utiliser le vérificateur de pilotes pour isoler et dépanner un pilote dans le système.

Plus d'informations

Cet article s'articule autour des rubriques suivantes :
  • Fonctionnalités du vérificateur de pilotes
  • Vérificateur d'E/S
  • Configuration requise pour le vérificateur de pilotes
  • Activation du vérificateur de pilotes
  • Débogage de violations d'accès du vérificateur de pilotes
  • Vérificateur de pilotes et pilotes graphiques
  • Gestionnaire de vérificateur de pilotes (Verifier.exe)
  • Compteurs globaux
  • Suivi de pool
  • Paramètres
  • Paramètres volatiles
  • Interface de ligne de commande
  • Informations supplémentaires pour les développeurs de pilotes

Fonctionnalités du vérificateur de pilotes

Vous pouvez utiliser le vérificateur de pilotes en exécutant Verifier.exe, puis en redémarrant votre ordinateur. Vous n'avez pas besoin d'apporter d'autres modifications pour commencer l'analyse des pilotes dans le système.

Le vérificateur de pilotes propose les fonctionnalités suivantes.

Allocations de pool

Tente d'allouer toutes les allocations de pool d'un pilote à partir d'un pool spécial. Au lieu de partager des allocations de pool avec le reste du système, les allocations de ce pilote sont isolées et liées par des autorisations Aucun accès. Cette fonctionnalité détermine si un pilote alloue plus que sa part du pool et par conséquent endommage le système ou provoque son instabilité. Lorsque vous activez cette fonctionnalité et que l'ordinateur cible est doté de suffisamment de mémoire physique et virtuelle, toutes les allocations du pilote sont automatiquement redirigées vers un pool spécial.

Pression mémoire importante

Vous pouvez exercer une forte pression mémoire sur un pilote spécifique sans incidence sur d'autres pilotes (indépendamment de la taille de la mémoire du système). Pour ce faire, indiquez au gestionnaire de mémoire qu'il doit invalider tout le code et toutes les données du pilote paginables, ainsi que le pool, le code et les données système paginables. Cela vous permet de détecter un pilote contenant à tort des verrous spinlock incorrects ou élevant à tort les niveaux de requêtes d'interruption (IRQL), puis obtenant l'accès aux données ou au code paginé. Cette fonctionnalité permet de détecter des problèmes intermittents et d'en déterminer la cause.

Validation des paramètres

Tous les paramètres d'appels spinlock, de niveaux IRQL et d'allocation de pool effectués par le pilote sont validés automatiquement. Cela signifie que des contrôles sont effectués pour garantir les éléments suivants :
  • Un niveau IRQL élevé est véritablement un niveau IRQL élevé (le niveau IRQL actuel est inférieur au niveau IRQL cible).
  • Un niveau IRQL inférieur est véritablement un niveau IRQL inférieur.
  • Double libération d'un verrouillage spinlock.
  • Les acquisitions/libérations de verrouillages spinlock se font au niveau IRQL approprié.
  • Les allocations/libérations de pool paginé se font au niveau IRQL correct (APC_LEVEL ou au-dessous).
  • Les allocations/libérations de pool non paginé se font au niveau IRQL correct (DISPATCH_LEVEL ou au-dessous).
  • Aucune valeur aléatoire (non initialisée) n'est spécifiée à ces interfaces de programmation d'applications (API).

Échecs d'injection d'allocation de pool

Il est possible de faire échouer aléatoirement les allocations de pool qui ne sont pas marquées MUST_SUCCEED par le pilote, afin de garantir que le pilote peut gérer correctement une situation d'insuffisance de mémoire.

Pool en cours de libération

Tout pool libéré est examiné pour s'assurer qu'aucune minuterie en attente ne se trouve dans l'allocation de pool, car cela rendrait extrêmement difficile le suivi de défaillances du système.

Détection de fuites du système

Toutes les allocations de pool du pilote sont suivies automatiquement. Lors du déchargement du pilote, un contrôle de bogue se produit si l'une des allocations n'est pas libérée. Vous pouvez alors faire appel à la commande du débogueur de noyau !verifier 3 pour afficher toutes les allocations qui ne sont pas libérées. Vous pouvez utiliser également cette commande avant le déchargement pour consulter à tout moment les allocations en cours du pilote.

Vérification du déchargement du pilote

Cette vérification permet de capturer les pilotes déchargés qui ne suppriment pas les ressources utilisées (ce qui accroît les possibilités de vérification de bogue après déchargement des pilotes). Les ressources qui ne sont pas supprimées par le pilote sont notamment les listes secondaires, les appels DPC, les threads de travail, les files d'attente, les minuteurs et autres ressources.

Vérificateur d'E/S

Si vous activez l'indicateur du Vérificateur d'E/S à l'aide du vérificateur ou de la clé de Registre VerifyDriverLevel (pour plus d'informations, voir la section « Activation du vérificateur de pilotes » de cet article), certaines vérifications du Gestionnaire d'E/S sont activées. Celles-ci sont notamment :
  • Tous les IRPS alloués par le biais de IoAllocateIrp le sont à partir d'un pool spécial.
  • Les vérifications sont faites dans IoCallDriver, IoCompleteRequest et IoFreeIrp pour intercepter des messages d'erreur de pilote.
  • Tous les échecs du vérificateur d'E/S avec le code DRIVER_VERIFIER_IOMANAGER_VIOLATION (0xC9) sont vérifiés.

Configuration requise pour le vérificateur de pilotes

Vous devez installer Windows 2000, Windows XP ou Windows Server 2003. Vous pouvez activer le vérificateur de pilotes sur les versions commercialisées et activées de Windows. Pour plus d'informations sur les éléments à prendre en compte avant d'activer le Gestionnaire de vérificateur de pilotes sur les serveurs de production, consultez l'article 251233 de la Base de connaissance Microsoft. Si l'antivirus Norton est installé, n'activez pas la détection de blocage du vérificateur de pilotes à cause des recommandations contenues dans l'article 325672 de la Base de connaissances Microsoft.

Activation du vérificateur de pilotes

Vous pouvez activer le vérificateur de pilotes à l'aide de Verifier.exe. Verifier.exe est inclus dans chaque copie de Windows et installé automatiquement dans le dossier System32. Verifier.exe intègre une interface de ligne de commande et une interface graphique utilisateur. Par conséquent, vous pouvez spécifier les pilotes et les niveaux de vérification appropriés. Vous pouvez consulter également en temps réel des statistiques concernant le vérificateur de pilotes. Pour plus d'informations, reportez-vous à la section « Gestionnaire de vérificateur de pilotes » de cet article.

Débogage de violations d'accès du vérificateur de pilotes

La commande !verifier du débogueur du noyau et l'outil Verifier.exe affichent en temps réel la configuration actuelle du vérificateur de pilotes et les statistiques.

Toutes les violations du vérificateur de pilotes entraînent des vérifications de bogue. Les plus courants (qui ne constituent pas la totalité) sont les suivants :
  • IRQL_NOT_LESS_OR_EQUAL 0xA
  • PAGE_FAULT_IN_NONPAGED_AREA 0x50
  • PAGE_FAULT_IN_NONPAGED_AREA 0x50
  • ATTEMPTED_WRITE_TO_READONLY_MEMORY 0xBE
  • SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION 0xC1
  • DRIVER_VERIFIER_DETECTED_VIOLATION 0xC4
  • DRIVER_CAUGHT_MODIFYING_FREED_POOL 0xC6
  • TIMER_OR_DPC_INVALID 0xC7
  • DRIVER_VERIFIER_IOMANAGER_VIOLATION 0xC9

Vérificateur de pilote et pilotes graphiques

Les pilotes graphiques du mode noyau Windows (notamment les DLL de pilotes d'imprimante et d'affichage) ne peuvent pas appeler le point d'entrée du pool directement. Les allocations de pools sont effectuées indirectement via des rappels DDI (Device Driver Interface) graphiques vers Win32k.sys. Par exemple, EngAllocMem est le rappel d'un appel de pilote graphique permettant d'allouer explicitement la mémoire de pool. D'autres rappels spécifiques, tels que EngCreatePalette et EngCreateBitmap renvoient la mémoire de pool.

Pour proposer le même type de test automatisé pour les pilotes graphiques, la prise en charge de certaines fonctionnalités du vérificateur de pilotes est intégrée à Win32k.sys. Certains pilotes graphiques étant néanmoins plus limités que d'autres pilotes en mode noyau, ils requièrent uniquement un sous-ensemble des fonctionnalités du vérificateur de pilotes. Plus particulièrement, les fonctionnalités de vérification des niveaux IRQL et d'E/S ne sont pas nécessaires. Les autres fonctionnalités, notamment l'utilisation d'un pool spécial, l'échec aléatoire des allocations de pools et le suivi de pool sont prises en charge à différents niveaux dans les différents rappels DDI graphiques.

Les échecs aléatoires sont pris en charge pour les fonctions de rappel DDI graphiques suivantes :
  • EngAllocMem
  • EngAllocUserMem
  • EngCreateBitmap
  • EngCreateDeviceSurface
  • EngCreateDeviceBitmap
  • EngCreatePalette
  • EngCreateClip
  • EngCreatePath
  • EngCreateWnd
  • EngCreateDriverObj
  • BRUSHOBJ_pvAllocRbrush
  • CLIPOBJ_ppoGetPath
De plus, l'utilisation d'un pool spécial et le suivi de pool sont pris en charge pour EngAllocMem.

Activez le vérificateur de pilotes pour les pilotes graphiques de la même façon que pour les autres pilotes (voir la section « Activation du vérificateur de pilotes » de cet article pour plus d'informations). Les indicateurs non pris en charge tels que le contrôle IRQL sont ignorés. De plus, vous pouvez faire appel à la commande du débogueur de noyau !gdikdx.verifier pour examiner l'état actuel du vérificateur de pilotes et le suivi des pools pour les pilotes graphiques.

REMARQUE : Vous devez utiliser le paramètre d'échec d'allocation aléatoire uniquement pour les tests de robustesse. Ce paramètre peut engendrer des messages d'erreur de rendu. Par conséquent, vous ne devez pas l'utiliser pour des tests de vérification afin de vérifier l'exactitude de l'implémentation du pilote graphique (par exemple, en comparant la sortie du pilote graphique à une image de référence).

Gestionnaire de vérificateur de pilotes (Verifier.exe)

L'outil Gestionnaire du Vérificateur de pilote (Verifier.exe) est la méthode privilégiée pour la création et la modification des paramètres du vérificateur de pilotes et de rassembler des statistiques provenant du vérificateur de pilotes. Verifier.exe se trouve dans le dossier %WinDir%\System32 pour chaque installation de Windows.

Statut du pilote

La page de propriétés Statut du pilote donne une image du statut en cours du vérificateur de pilotes. Vous pouvez voir les pilotes que le vérificateur détecte. Le statut peut être l'un des suivants :
  • Chargé : Le pilote est chargé et vérifié.
  • Déchargé : Le pilote n'est pas chargé, mais il a été chargé au moins une fois depuis que vous avez redémarré l'ordinateur.
  • Jamais chargé : Le pilote n'a jamais été chargé. Ce statut indique que le fichier de l'image du pilote est endommagé ou que vous avez spécifié un nom de pilote introuvable dans le système.
Vous pouvez cliquer sur l'en-tête de liste pour trier la liste par noms de pilote ou statut. Dans la zone supérieure droite de la boîte de dialogue, vous pouvez consulter les types actuels de vérification en application. L'état des pilotes est mis à jour automatiquement si vous ne basculez pas en mode d'actualisation manuelle. Vous pouvez modifier la fréquence d'actualisation à l'aide des cases d'option situées dans la zone inférieure gauche de la boîte de dialogue. Vous pouvez forcer également une mise à jour de l'état en cliquant sur Mettre à jour maintenant.

Si vous activez l'indicateur de pool spécial et si moins de 95 % des allocations de pool sont affectées au pool spécial, un message d'avertissement s'affiche sur cette page. Cela signifie que vous devez sélectionner un plus petit jeu de pilotes pour vérifier ou ajouter davantage de mémoire physique à l'ordinateur pour obtenir une meilleure couverture de la vérification des allocations de pool.

Compteurs globaux

La page de propriétés Compteurs globaux affiche la valeur actuelle de certains compteurs gérés par le vérificateur de pilotes. Une valeur zéro pour un compteur peut indiquer que l'indicateur de vérificateur de pilotes associé n'est pas activé. Par exemple, une valeur de 0 pour le compteur Autre/Erreurs indique que l'indicateur de simulation de faiblesse des ressources n'est pas activé. Vous pouvez surveiller l'activité du vérificateur parce que les valeurs des compteurs sont mises à jour automatiquement (par défaut). Vous pouvez modifier la fréquence d'actualisation, basculer en actualisation manuelle ou forcer une actualisation à l'aide du groupe de contrôles situé dans la zone inférieure gauche de la boîte de dialogue.

Suivi de pool

Cette page de propriétés affiche d'autres statistiques collectées du vérificateur de pilotes. Tous les compteurs indiqués dans cette page sont liés à l'indicateur de suivi de pool du vérificateur. La plupart d'entre eux sont classés par pilote (par exemple, allocations en cours, octets alloués en cours, etc.). Vous devez donc sélectionner un pilote dans la zone de liste déroulante modifiable afin d'afficher les compteurs spécifiques à ce pilote.

Paramètres

Cette page vous permet de créer et de modifier les paramètres du vérificateur de pilotes. Ces paramètres sont enregistrés dans le Registre et vous devez redémarrer l'ordinateur pour qu'ils prennent effet. Vous pouvez utiliser la liste pour consulter les pilotes actuellement installés. Chaque pilote peut se trouver dans l'un des états suivants :
  • Activé : Le pilote est vérifié actuellement.
  • Désactivé : Le pilote n'est pas vérifié actuellement.
  • Activé (redémarrage nécessaire) : Le pilote est vérifié uniquement après le redémarrage suivant.
  • Désactivé (redémarrage nécessaire) : Le pilote est vérifié actuellement mais n'est pas vérifié après le redémarrage suivant.
Vous pouvez sélectionner un ou plusieurs pilotes dans la liste et basculer entre les statuts à l'aide des deux boutons sous la liste. Vous pouvez également cliquer avec le bouton droit sur un pilote pour afficher le menu contextuel qui permet d'activer et de désactiver le statut.

Dans la partie inférieure de la boîte de dialogue, vous pouvez spécifier d'autres pilotes (séparés par des espaces) à vérifier après le redémarrage suivant. Cette commande s'utilise généralement pour installer un nouveau pilote qui n'est pas encore chargé.

Si le groupe de cases d'option en haut de la liste a la valeur Vérifier tous les pilotes, la liste et les boutons Vérifier et Ne pas vérifier ainsi que le contrôle d'édition ne sont pas disponibles. Cela signifie qu'après le redémarrage suivant, tous les pilotes du système sont vérifiés.

Vous pouvez définir le type de vérification à l'aide des cases à cocher dans la zone supérieure droite de la boîte de dialogue. Vous pouvez activer la vérification d'E/S au niveau 1 ou au niveau 2. La vérification de niveau 2 est plus forte.

Vous devez enregistrer tout changement apporté aux paramètres en cliquant sur Appliquer. Deux autres boutons se trouvent dans cette page :
  • Paramètres favoris : Permet de sélectionner quelques-uns des paramètres les plus utilisés (avec tous les pilotes vérifiés).
  • Réinitialiser tout : Permet d'effacer tous les paramètres du vérificateur de pilotes, de manière qu'aucun pilote ne soit vérifié.
Une fois que vous avez cliqué sur Appliquer, vous devez redémarrer l'ordinateur pour que les modifications entrent en vigueur.

Paramètres volatiles

Vous pouvez utiliser cette page de propriétés pour modifier immédiatement les indicateurs de vérificateur de pilotes. Vous pouvez basculer uniquement le statut de certains indicateurs du vérificateur de pilotes et vous ne pouvez pas modifier la liste des pilotes qui sont vérifiés. Après avoir modifié le statut de certaines cases à cocher, vous devez cliquer sur Appliquer pour que les modifications prennent effet. Les modifications entrent immédiatement en vigueur et persistent jusqu'aux prochains changements ou jusqu'à ce que vous redémarriez l'ordinateur.

Interface de ligne de commande

Vous pouvez également exécuter Verifier.exe à partir d'une ligne de commande (pour plus d'informations, tapez verifier.exe /? à une invite de commandes). La liste suivante affiche les indicateurs de ligne de commande les plus utilisés :
  • verifier.exe /flags valeur [/iolevel 2]
    Spécifie une valeur décimale des indicateurs de vérificateur de pilotes et peut-être le niveau de vérification d'E/S (pour obtenir une liste des indicateurs disponibles, tapez verifier.exe /? à une invite de commandes ou reportez-vous à la section « Activation du vérificateur de pilotes » de cet article).

    Remplacez le paramètre valeur par l'une des valeurs binaires de vérification suivantes :
    0 - Vérification du pool spécial
    1 - Forcer le contrôle IRQL
    2 - Simulation de ressources faibles
    3 - Suivi de pool
    4 - Vérification d'E/S
    5 - Détection de blocage
    6 - Vérification d'E/S améliorée
    7 - Vérification de DMA
    Par exemple, tapez la commande suivante :
    c:\verifier /flags 3 /iolevel 2
    REMARQUE : Le niveau de vérification d'E/S par défaut est 1. La valeur est ignorée si le bit de vérification d'E/S n'est pas défini dans les indicateurs.
  • verifier.exe /all
    Vérifie tous les pilotes du système.
  • verifier.exe /volatile /flags valeur
    Change immédiatement les indicateurs de vérificateur.
  • verifier.exe /reset
    Efface tous les paramètres de vérificateur de pilotes actuels.
  • verifier /query
    Vide le statut du vérificateur de pilotes actuel et les compteurs dans la sortie standard.
  • verifier.exe /log LOG_FILE_NAME [/interval secondes]
    Enregistre le statut du vérificateur de pilotes et les compteurs dans un fichier journal (où secondes est la période que vous spécifiez).

Informations supplémentaires pour les développeurs de pilote

Les sections qui suivent donnent des détails supplémentaires concernant les paramètres de vérificateur de pilotes qui peuvent présenter un intérêt pour les développeurs de pilotes. Ces paramètres ne sont pas requis en général par les professionnels de l'informatique.
Avertissement Toute utilisation incorrecte de l'Éditeur du Registre peut générer des problèmes sérieux, pouvant vous obliger à réinstaller votre système d'exploitation. Microsoft ne peut pas garantir que les problèmes résultant d'une mauvaise utilisation de l'Éditeur du Registre puissent être résolus. Vous assumez l'ensemble des risques liés à l'utilisation de cet outil.
Pour activer le vérificateur de pilotes en modifiant le Registre, procédez comme suit :
  1. Démarrez l'Éditeur du Registre (Regedt32).
  2. Recherchez la clé de Registre suivante : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\VerifyDrivers
  3. Modifiez la clé REG_SZ.
Affectez à la clé REG_SZ les noms des pilotes (non sensibles à la casse) à tester. Vous pouvez spécifier plusieurs pilotes, mais utilisez un seul pilote. Vous pouvez ainsi vous assurer que les ressources système disponibles ne sont pas épuisées prématurément. L'insuffisance prématurée des ressources n'entraîne aucune instabilité du système, mais certaines vérifications du pilote peuvent être ignorées.

La liste suivante affiche des exemples de valeurs pour la clé REG_SZ :
  • Ntfs.sys
  • Win32k.sys ftdisk.sys
  • *.sys
Vous pouvez spécifier le niveau de vérification de pilotes dans la clé de Registre suivante : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\VerifyDriverLevel La liste suivante affiche les valeurs de champs binaires pour cette clé. Vous pouvez également combiner librement les valeurs suivantes.
  • 0x01 : Tente de satisfaire toutes les allocations à partir du pool spécial.
  • 0x02 : Applique une pression mémoire à ce pilote afin de valider l'utilisation du niveau IRQL pour accéder au code et aux données paginables.
  • 0x04 : Fait échouer aléatoirement plusieurs demandes d'allocation de pool. Cette action a lieu uniquement après le démarrage du système et lorsque ce dernier a atteint un point auquel le problème peut être traité en tant que situation raisonnable devant être gérée.
  • 0x08 : Active le suivi de l'allocation de pool. Chaque allocation doit être libérée avant que le pilote soit déchargé ou que le système effectue un contrôle de bogue.
  • 0x10 : Active le vérificateur d'E/S.
REMARQUE : La valeur par défaut est 3 si la clé n'existe pas, ou si vous ne spécifiez pas un niveau de vérification de pilotes. La valeur par défaut est 0x1B si vous utilisez les Paramètres favoris du vérificateur. Pour suivre les fuites de mémoire, essayez la valeur 0xB. Cette valeur est obtenue facilement en cliquant sur la case à cocher paramètres favoris pour la sélectionner et en cliquant sur la case à cocher vérification d'E/S pour la désactiver.

Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professionnel
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows XP Édition familiale
  • Microsoft Windows XP Professional
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
Mots-clés : 
kbhowto kbenv kbprogramming KB244617
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Partager
Options de support supplémentaire
Forums du support Microsoft Community
Nous contacter directement
Trouver un partenaire Microsoft Certified Partner
Microsoft Store