Что на самом деле произошло
Процессор работает не в одном режиме, а на нескольких уровнях приоритета. Обычные программы крутятся на самом низком, обработчики прерываний от устройств — на высоких. Чем выше уровень, тем меньше разрешено: на высоких уровнях нельзя обращаться к данным, которые система имеет право временно выгрузить из оперативной памяти на диск. Смысл ограничения простой — на высоком уровне некогда ждать, пока данные подтянутся обратно.
IRQL_NOT_LESS_OR_EQUAL появляется тогда, когда кто-то это правило нарушил: код на высоком уровне полез за данными, которых в памяти в тот момент не оказалось. Продолжать в такой ситуации система не может — она не знает, насколько уже испорчено её состояние, — и останавливается, чтобы не повредить файлы на диске.
Из этого следуют два вывода, которые экономят много времени. Первый: код на высоких уровнях — это почти всегда драйвер, а не программа. Antivirus, сетевая карта, видеокарта, звук, виртуальные диски — вот типичный список. Второй: если планка памяти отдаёт не то, что в неё записали, картина получается ровно такой же, потому что данные по нужному адресу оказываются мусором. Поэтому проверять надо обе версии, а не спорить о них.
