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