Suivi du pool
Le suivi du pool surveille les allocations de mémoire effectuées par le pilote. Au moment où le pilote est déchargé, Driver Verifier s’assure que toutes les allocations effectuées par le pilote ont été libérées.
Les allocations de mémoire non allouées (également appelées fuites de mémoire) sont une cause courante de baisse des performances du système d’exploitation. Ceux-ci peuvent fragmenter les pools système et éventuellement provoquer des plantages système.
Lorsque cette option est active, le vérificateur de pilotes émet des case activée 0xC4 de bogues (avec le paramètre 1 égal à 0x62) si un pilote se décharge sans libérer toutes ses allocations.
Si le vérificateur de pilotes émet ce bogue case activée avec le paramètre 1 égal à 0x51, 0x52, 0x53, 0x54 ou 0x59, le pilote a écrit en mémoire en dehors de ses allocations. Dans ce cas, vous devez activer la fonctionnalité Pool spécial pour localiser la source de l’erreur.
Pour obtenir la liste des paramètres de case activée, consultez Vérification des bogues 0xC4 (DRIVER_VERIFIER_DETECTED_VIOLATION).
À compter de Windows Vista, l’activation de l’option Suivi du pool permet également le suivi des pages verrouillées. Lorsque cette option est active, le vérificateur de pilotes émet des 0xCB de vérification des bogues (DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS) si un pilote ne parvient pas à libérer les pages verrouillées après une opération d’E/S.
Dans Windows 7 et versions ultérieures du système d’exploitation Windows, l’option Suivi du pool prend en charge la mémoire allouée à l’aide des API de noyau suivantes :
IoAllocateIrp et les autres routines qui peuvent allouer des structures de données de paquets de demandes d’E/S (IRP)
RtlAnsiStringToUnicodeString et autres routines de chaîne de bibliothèque d’exécution (RTL)
Dans Windows 7 et versions ultérieures du système d’exploitation Windows, lorsque le suivi du pool est activé, le vérificateur de pilotes peut détecter les tentatives d’allocation de mémoire du pool de noyau avec quota dans le contexte du processus inactif. Ces tentatives signifient généralement que le pilote alloue de la mémoire à partir d’une routine DPC. Le contexte de thread ou de processus pour les routines DPC n’étant pas fiable, il est incorrect d’essayer de facturer le quota à ce processus.
Suivi du pool de surveillance
Les statistiques d’allocation du pool de mémoire peuvent être surveillées séparément pour chaque pilote en cours de vérification. Ces statistiques peuvent être affichées par le Gestionnaire du vérificateur de pilotes, la ligne de commande Verifier.exe ou dans un fichier journal. Pour plus d’informations, consultez Surveillance des compteurs individuels .
L’extension du débogueur du noyau !verifier 0x3 peut être utilisée pour localiser les allocations de mémoire en attente après le déchargement du pilote, ou pour suivre les allocations actuelles pendant l’exécution du pilote. Cette extension affiche également la balise de pool, la taille du pool et l’adresse de l’allocateur pour chaque allocation. Pour plus d’informations sur les extensions du débogueur, consultez Débogage Windows.
Frais de quota de pool à partir de la routine DPC
Les pilotes de noyau peuvent appeler ExAllocatePoolWithQuotaTag pour allouer la mémoire du pool de noyau et facturer le nombre d’octets alloués au quota de pool du processus actuel. Les pilotes utilisent généralement le quota pour les allocations de mémoire directement liées à une demande provenant d’une application.
Les routines d’appel de procédure différée (DPC) peuvent s’exécuter dans le contexte de n’importe quel processus. Par conséquent, la facturation d’un quota à partir d’une routine DPC facture un processus aléatoire. Pire encore, lorsque la routine DPC s’exécute dans le contexte du processus inactif, cette condition peut entraîner une altération de la mémoire ou des plantages système.
À partir de Windows 7, Driver Verifier détecte les appels ExAllocatePoolWithQuotaTag à partir des routines DPC.
Activation de cette option
Vous pouvez activer la fonctionnalité De suivi du pool pour un ou plusieurs pilotes à l’aide du Gestionnaire du vérificateur de pilotes ou de la ligne de commande Verifier.exe. Pour plus d’informations, consultez Sélection des options du vérificateur de pilote.
Sur la ligne de commande
Sur la ligne de commande, l’option Suivi du pool est représentée par Bit 3 (0x8). Pour activer le suivi du pool, utilisez une valeur d’indicateur 0x8 ou ajoutez 0x8 à la valeur de l’indicateur. Par exemple :
verifier /flags 0x8 /driver MyDriver.sys
La fonctionnalité sera active après le prochain démarrage.
Sur Windows Vista et les versions ultérieures de Windows, vous pouvez également activer et désactiver le suivi du pool sans redémarrer l’ordinateur en ajoutant le paramètre /volatile à la commande. Par exemple :
verifier /volatile /flags 0x8 /adddriver MyDriver.sys
Ce paramètre prend effet immédiatement, mais il est perdu lorsque vous arrêtez ou redémarrez l’ordinateur. Pour plus d’informations, consultez Utilisation de paramètres volatiles.
La fonctionnalité De suivi du pool est également incluse dans les paramètres standard. Par exemple :
verifier /standard /driver MyDriver.sys
Utilisation du Gestionnaire du vérificateur de pilotes
- Démarrez le Gestionnaire du vérificateur de pilotes. Tapez Vérificateur dans une fenêtre d’invite de commandes.
- Sélectionnez Créer des paramètres personnalisés (pour les développeurs de code), puis cliquez sur Suivant.
- Sélectionnez Sélectionner des paramètres individuels dans une liste complète.
- Sélectionnez (case activée) Suivi du pool.
La fonctionnalité De suivi du pool est également incluse dans les paramètres standard. Pour utiliser cette fonctionnalité, dans le Gestionnaire du vérificateur de pilotes, cliquez sur Créer des paramètres standard.