Поделиться через


0xC2 проверки ошибок: BAD_POOL_CALLER

Проверка ошибок BAD_POOL_CALLER имеет значение 0x000000C2. Это означает, что текущий поток выполняет неправильный запрос пула.

Важно!

Эта статья предназначена для программистов. Если вы являетесь клиентом, который получил код ошибки "синий экран" во время работы с компьютером, см. статью Устранение ошибок синего экрана.

Параметры BAD_POOL_CALLER

Параметр 1 указывает тип нарушения.

Параметр 1 Параметр 2 Параметр 3 Параметр 4 Причина ошибки

0x00

0

Тип пула

Тег пула

Текущий поток запросил выделение пула с нулевыми байтами.

0x01,

0x02,

0x04

Указатель на заголовок пула

Первая часть содержимого заголовка пула

0

Заголовок пула поврежден.

0x06

Зарезервировано

Указатель на заголовок пула

Содержимое заголовка пула

Текущий поток попытался освободить пул, который уже был освобожден.

0x07

Зарезервировано

Содержимое заголовка пула

Адрес освобождаемого блока пула

Текущий поток попытался освободить пул, который уже был освобожден.

0x08

Текущий IRQL

Тип пула

Размер выделения в байтах

Текущий поток попытался выделить пул в недопустимом IRQL.

0x09

Текущий IRQL

Тип пула

Адрес пула

Текущий поток попытался освободить пул в недопустимом IRQL.

0x0A

Адрес пула

Тег распределителя

Тег, используемый в попытке бесплатного использования

Текущий поток попытался освободить память пула с помощью неправильного тега.

(Память может принадлежать другому компоненту.)

0x0B,

0x0C,

или 0x0D

Адрес пула

Тег выделения пула

Недопустимый указатель на процесс квоты

Текущий поток попытался освободить квоту на поврежденное выделение пула.

0x40

Начальный адрес

Начало системного адресного пространства

0

Текущий поток попытался освободить пул ядра по адресу в пользовательском режиме.

0x41

Начальный адрес

Физический кадр страницы

Самый высокий физический кадр страницы

Текущий поток попытался освободить неразделимый адрес пула.

0x42

или 0x43

Освобождаемый адрес

0

0

Текущий поток попытался освободить виртуальный адрес, который никогда не был в пуле.

0x44

Начальный адрес

Зарезервировано

0

Текущий поток попытался освободить неразделимый адрес пула.

0x46

Начальный адрес

0

0

Текущий поток попытался освободить недопустимый адрес пула.

0x47

Начальный адрес

Физический кадр страницы

Самый высокий физический кадр страницы

Текущий поток попытался освободить неразделимый адрес пула.

0x48

Начальный адрес

Зарезервировано

Зарезервировано

Текущий поток попытался освободить адрес невыделяемого постраничного пула.

0x50

Начальный адрес

Начальное смещение в страницах от начала выстраивного пула

Размер выстраивного пула в байтах

Текущий поток попытался освободить адрес невыделяемого постраничного пула.

0x60

Начальный адрес

0

0

Текущий поток попытался освободить недопустимый адрес непрерывной памяти.

(Вызывающий объект MmFreeContiguousMemory передает неправильный указатель.)

0x99

Адрес, который освобождается

0

0

Текущий поток попытался освободить пул с недопустимым адресом.

(Этот код также может указывать на повреждение заголовка пула.)

0x9A

Тип пула

Число запрошенных байтов

Тег пула

Текущий поток помечает запрос на выделение MUST_SUCCEED.

(Этот тип пула больше не поддерживается.)

0x9B

Тип пула

Число запрошенных байтов

Адрес вызывающего абонента

Текущий поток попытался выделить пул с тегом 0

(Это не поддается отслеживанию и, возможно, повреждает существующие таблицы тегов.)

0x9C

Тип пула

Число запрошенных байтов

Адрес вызывающего абонента

Текущий поток попытался выделить пул с тегом BIG.

(Это не поддается отслеживанию и может привести к повреждению существующих таблиц тегов.)

0x9D

Использован неправильный тег пула

Тип пула

Адрес вызывающего абонента

Текущий поток попытался выделить пул с тегом, который не содержит букв или цифр. Использование таких тегов усложняет отслеживание проблем с пулом.

0x41286

Зарезервировано

Зарезервировано

Начальное смещение от начала пула страниц в страницах

Текущий поток попытался освободить адрес страничного пула в середине выделения.

Коды _POOL_TYPE перечисляются в ntddk.h. В частности, 0 означает невыгружаемый пул, а 1 — пул с разбивкой на страницы.

Причина

Текущий поток сделал недопустимый запрос пула. Обычно это происходит на плохом уровне IRQL или двойном освобождении одного и того же выделения памяти и т. д.

Решение

Активируйте средство проверки драйверов с включенными параметрами пула памяти, чтобы получить дополнительные сведения об этих ошибках и найти неисправный драйвер.

Средство проверки драйверов

Средство проверки драйверов — это средство, которое выполняется в режиме реального времени для проверки поведения драйверов. Если при выполнении кода драйвера отображаются ошибки, он заранее создает исключение, чтобы обеспечить дальнейшее изучение этой части кода драйвера. Диспетчер проверки драйверов встроен в Windows и доступен на всех компьютерах с Windows. Чтобы запустить диспетчер средства проверки драйверов, введите Verifier в командной строке. Вы можете настроить драйверы, которые вы хотите проверить. Код, который проверяет драйверы, добавляет дополнительные затраты при выполнении, поэтому попробуйте проверить минимальное количество драйверов. Дополнительные сведения см. в разделе Средство проверки драйверов.

Диагностика памяти Windows

В частности, в ситуациях с повреждением пула памяти запустите средство диагностики памяти Windows, чтобы попытаться изолировать физическую память в качестве причины. В поле поиска панели управления введите Память, а затем выберите Диагностика проблем с памятью компьютера. После запуска теста используйте средство просмотра событий, чтобы просмотреть результаты в системном журнале. Найдите запись MemoryDiagnostics-Results , чтобы просмотреть результаты.