

Wiele już razy widziałem na grupach dyskusyjnych powtórzenia tego samego błędu: mylenia skrótów IRQ oraz IRQL. Osobom, którym system Windows pokazuje niebieskie ekrany z kodem IRQL_NOT_LESS_OR_EQUAL „fachowcy” natychmiast polecają zmianę przerwań i usunięcie ewentualnych konfliktów. Choć metoda ta często może ukryć błąd, komunikat nic nie mówi o przerwaniach!
Skrót IRQL oznacza Internal Request Level lub Interrupt Request Level (w zależności od źródła) i opisuje zmienną przechowywaną przez systemy z rodziny Windows NT dla każdego procesora logicznego. Zmienna ta przechowuje aktualny numer poziomu uprzywilejowania wykonywanego kodu wobec przerwań i mechanizmów synchronizacyjnych systemu. Na przykład, tylko na najniższym poziomie IRQL procesor może wykonywać normalny kod procesów użytkownika przełączając wątki, bowiem podniesienie IRQL choćby o jedną pozycję blokuje wirtualne „przerwanie modułu decyzyjnego” i zapobiega przejściu procesora w nowy wątek. Podniesienie poziomu IRQL jest wykonywane automatycznie przez system w określonych okolicznościach lub ręcznie przez kod jądra lub sterowników w sytuacjach, w których na rękę im jest zablokowanie przełączania procesów lub przyjmowania przerwań sprzętowych. Im dłużej system pracuje na niskim poziomie IRQL, tym sprawniej przełącza procesy użytkownika i tym płynniej pracuje; podstawowym zaleceniem dla autorów sterowników systemu NT jest używanie wysokiego IRQL tylko do potwierdzania przyjęcia przerwania i dokonywanie właściwego przetwarzania danych otrzymanych z urządzenia w sposób odroczony.
Dlaczego zatem IRQL ma jednak niewielki związek z przerwaniami? Ponieważ współdzielenie przerwań często powoduje ujawnianie się problemów ze stabilnym działaniem sterowników urządzeń, będących najczęściej skutkiem amatorszczyzny odstawionej przez ich autorów. Błąd IRQL_NOT_LESS_OR_EQUAL (oznaczający próbę wywołania funkcji wymagającej niskiego poziomu IRQL przy jego wysokim poziomie) może być też spowodowany innym błędem sterownika (na przykład wymieceniem strony pamięci zawierającej bardzo ważny kod) lub awarią sprzętu — podkręcenie procesora, uszkodzenie chłodzenia lub niedomaganie zasilacza to częste powody pojawiania się tego niebieskiego ekranu.