!бассейн
Расширение !pool отображает сведения о выделении определенного пула или о всем системном пуле.
!pool [Address [Flags]]
Параметры
Адрес
Указывает отображаемую запись пула. Если адрес равен -1, эта команда отображает сведения обо всех кучах в процессе.
Если адрес равен 0 или опущен, эта команда отображает сведения о куче процесса.
Флаги
Указывает уровень детализации, используемый. Это может быть любое сочетание следующих битовых значений; Значение по умолчанию равно нулю:
Bit 0 (0x1)
Позволяет отображать содержимое пула, а не только заголовки пула.
Бит 1 (0x2)
Приводит к подавлению сведений о заголовке пула для всех пулов, за исключением того, который фактически содержит указанный адрес.
Бит 31 (0x80000000)
Подавляет описание типа пула и тега пула в отображении.
DLL-библиотеки
Kdexts.dll
Дополнительная информация
Сведения о пулах памяти см. в документации по комплекту драйверов Windows (WDK) и внутренних компонентах Microsoft Windows, марку Руссиновичу и Дэвиду Соломону.
Замечания
В Windows XP и более поздних версиях Windows расширение пула !отображает тег пула , связанный с каждым выделением. Также отображается владелец этого тега пула. Это отображение основано на содержимом файла pooltag.txt. Этот файл находится в подкаталоге для установки средств отладки для Windows. Если вы хотите, можно изменить этот файл, чтобы добавить дополнительные теги пула, относящиеся к проекту.
Предупреждение при установке обновленной версии средств отладки для Windows в том же каталоге, что и текущая версия, она перезаписывает все файлы в этом каталоге, включая pooltag.txt. При изменении или замене примера файла pooltag.txt обязательно сохраните копию в другом каталоге. После переустановки отладчиков можно скопировать сохраненные pooltag.txt по умолчанию.
Если пул расширений !pool сообщает о повреждении пула, следует использовать !poolval для изучения.
Ниже приведен пример. Если адрес указывает 0xE1001050, отображаются заголовки всех пулов в этом блоке, а сам 0xE1001050 помечается звездочкой (*).
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
.....
В этом примере в правом столбце показан тег пула. Столбец слева от этого показывает, является ли пул свободным или выделенным.
Следующая команда показывает заголовки пула и содержимое пула:
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
......