!pool

L’extension !pool affiche des informations sur une allocation de pool donnée ou sur l’ensemble du pool à l’échelle du système.

!pool [Address [Flags]]

Paramètres

Adresse
Spécifie l’entrée de pool à afficher. Si Address à la valeur -1, cette commande affiche des informations sur tous les segments du processus.

Si Address à la valeur 0 ou est omise, cette commande affiche des informations sur le segment de processus.

Indicateurs
Spécifie le niveau de détail à utiliser. Il peut s’agir de n’importe quelle combinaison de valeurs de bits suivantes, la valeur par défaut étant zéro :

Bit 0 (0x1)
Entraîne l’inclusion des contenus de pool et pas seulement des en-têtes de pool dans l'affichage.

Bit 1 (0x2)
Entraîne la suppression des informations d’en-tête de pool pour tous les pools dans l'affichage, à l’exception de celles qui contiennent effectivement le paramètre Address spécifié.

Bit 31 (0x80000000)
Supprime la description du type de pool et de la balise de pool dans l’affichage.

DLL

Kdexts.dll

Informations supplémentaires

Pour obtenir des informations sur les pools de mémoire, veuillez consulter la documentation Windows Driver Kit (WDK) et Microsoft Windows Internals (Au cœur de Windows) de Mark Russinovich et David Solomon.

Notes

Dans Windows XP et dans les versions ultérieures de Windows, l’extension !pool affiche la balise de pool associée à chaque allocation. Le propriétaire de cette balise de pool est également affiché. Cet affichage est basé sur le contenu du fichier pooltag.txt. Ce fichier se trouve dans le sous-répertoire de triage d’installation des Outils de débogage pour Windows. Si vous le souhaitez, vous pouvez modifier ce fichier pour ajouter des balises de pool supplémentaires pertinentes pour votre projet.

Avertissement Si vous installez une version mise à jour des Outils de débogage pour Windows dans le même répertoire que la version actuelle, elle remplace tous les fichiers de ce répertoire, y compris pooltag.txt. Si vous modifiez ou remplacez l’exemple de fichier pooltag.txt, veillez à en enregistrer une copie dans un autre répertoire. Après avoir réinstallé les débogueurs, vous pouvez copier par-dessus la version par défaut le fichier pooltag.txt précédemment sauvegardé.

Si l’extension !pool signale une altération du pool, vous devez utiliser !poolval pour l'examiner.

Voici un exemple. Si Address spécifie 0xE1001050, les en-têtes de tous les pools de ce bloc sont affichés et 0xE1001050 lui-même est marqué d'un astérisque (*).

kd> !pool e1001050 
 e1001000 size:   40 previous size:    0  (Allocated)  MmDT
 e1001040 size:   10 previous size:   40  (Free)       Mm  
*e1001050 size:   10 previous size:   10  (Allocated) *ObDi
 e1001060 size:   10 previous size:   10  (Allocated)  ObDi
 e1001070 size:   10 previous size:   10  (Allocated)  Symt
 e1001080 size:   40 previous size:   10  (Allocated)  ObDm
 e10010c0 size:   10 previous size:   40  (Allocated)  ObDi
.....

Dans cet exemple, la colonne la plus à droite affiche la balise de pool. La colonne située à sa gauche indique si le pool est libre ou alloué.

La commande suivante affiche les en-têtes de pool et les contenus de pool :

kd> !pool e1001050 1
 e1001000 size:   40 previous size:    0  (Allocated)  MmDT
 e1001008  ffffffff 0057005c 004e0049 004f0044
    e1001018  ffffffff 0053005c 00730079 00650074

 e1001040 size:   10 previous size:   40  (Free)       Mm  
 e1001048  ffffffff e1007ba8 e1501a58 01028101
    e1001058  ffffffff 00000000 e1000240 01028101

*e1001050 size:   10 previous size:   10  (Allocated) *ObDi
 e1001058  ffffffff 00000000 e1000240 01028101
    e1001068  ffffffff 00000000 e10009c0 01028101

 e1001060 size:   10 previous size:   10  (Allocated)  ObDi
 e1001068  ffffffff 00000000 e10009c0 01028101
    e1001078  ffffffff 00000000 00000000 04028101

......