Неправильная просьба к пулу памяти
Драйверам постоянно нужна память: под сетевой пакет, под запрос к диску, под список устройств. Они не берут её сами, а просят у ядра, и ядро выдаёт участки из пула. Пул бывает двух видов: тот, который можно временно выгрузить на диск, и тот, который всегда должен оставаться в оперативной памяти. У каждого участка есть заголовок с размером и меткой владельца, а правила пользования пулом строгие: когда можно просить, как возвращать, что делать с чужими участками.
По справке Microsoft, код 0xC2 означает, что текущий поток сделал неправильный запрос к пулу. Типичные примеры, которые приводит Microsoft, — запрос на неверном уровне прерывания и повторное освобождение одного и того же участка. В отличие от многих других синих экранов, здесь система не столкнулась с последствиями, а поймала нарушителя за руку в момент самого нарушения.
Поэтому вопрос «система или железо» для этого кода обычно решается в пользу программ. Повторное освобождение, запрос в недопустимый момент, освобождение участка с чужой меткой — это ошибки в логике драйвера, железо так ошибаться не умеет. Исключение — варианты, при которых ядро обнаруживает повреждённый заголовок участка: такой заголовок может испортить и драйвер, и планка памяти, искажающая биты.
