BSOD 0x000000C1 — SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION

BSOD 0x000000C1 Данный стоп код означает, что драйвером была выполнена попытка записи по неправильному адресу в специальном пуле (который выделяется утилитой Driver Verifier). Стоп код имеет следующие параметры (параметр 4 определяет тип ошибки).

Параметр 1 Параметр 2 Параметр 3 Параметр 4 Причина ошибки
Адрес памяти, которую драйвер попытался освободить Зарезервировано 0 0x20 Драйвер попытался освободить память, которая не была выделена
Адрес памяти, которую драйвер попытался освободить Запрошено байтов Подсчитано байтов (передано вызывающему коду) 0x21,0x22 Драйвер попытался освободить память по неправильному адресу
Адрес памяти, которую драйвер попытался освободить Адрес, который имеет поврежденные биты Зарезервировано 0x23 Драйвер освободил память, но рядом находящиеся байты этой страницы были повреждены
Адрес памяти, которую драйвер попытался освободить Адрес, который имеет поврежденные биты Зарезервировано 0x24 Драйвер освободил память, но байты, которые находятся за концом выделенной памяти были перезаписаны
Текущий IRQL Тип пула Число байтов 0x30 Драйвер попытался выделить пул при некорректном IRQL
Текущий IRQL Тип пула Адрес, который драйвер попытался освободить 0x31 Драйвер попытался освободить память пула при некорректном значении IRQL
Адрес памяти, которую драйвер попытался освободить Адрес памяти, где были обнаружены поврежденные биты Зарезервировано 0x32 Драйвер освободил память, но рядом находящиеся байты этой страницы имеют ошибку в одном бите

Коды _POOL_TYPE перечислены в ntddk.h.

Причины

Драйвер попытался выполнить запись в неправильную секцию специального пула.

Решение

Необходимо получить стек вызовов текущего потока. Обычно этого оказывается достаточно для выявления источника ошибки.