The !irql extension displays the interrupt request level (IRQL) of a processor on the target computer before the debugger break.
Specifies the processor. Enter the processor number. If this parameter is omitted, the debugger displays the IRQL of the current processor.
The !irql extension is only available in Windows Server 2003 and later versions of Windows.
Windows Server 2003 and later
For information about IRQLs, see the Windows Driver Kit (WDK) documentation and Microsoft Windows Internals by Mark Russinovich and David Solomon. (These resources may not be available in some languages and countries.)
When the target computer breaks into the debugger, the IRQL changes, but the IRQL that was effective just before the debugger break is saved. The !irql extension displays the saved IRQL.
Similarly, when a bug check occurs and a crash dump file is created, the IRQL saved in the crash dump file is the one immediately prior to the bug check, not the IRQL at which the KeBugCheckEx routine was executed.
In both cases, the current IRQL is raised to DISPATCH_LEVEL, except on x86 architectures. Thus, if more than one such event occurs, the IRQL displayed will also be DISPATCH_LEVEL, making it useless for debugging purposes.
The !pcr extension displays the current IRQL on all versions of Windows, but the current IRQL is usually not useful. The IRQL that existed just before the bug check or debugger connection is more interesting, and this is displayed only with !irql.
If you supply an invalid processor number, or there has been kernel corruption, the debugger displays a message "Cannot get PRCB address".
Here is an example of the output from this extension from a dual-processor x86 computer:
kd> !irql 0 Debugger saved IRQL for processor 0x0 -- 28 (CLOCK2_LEVEL) kd> !irql 1 Debugger saved IRQL for processor 0x1 -- 0 (LOW_LEVEL)
If the debugger is in verbose mode, a description of the IRQL itself is included. Here is an example from an Itanium processor:
kd> !irql Debugger saved IRQL for processor 0x0 -- 12 (PC_LEVEL) [Performance counter level]
The meaning of the IRQL number often depends on the processor. Here is an example from an x64 processor. Note that the IRQL number is the same as in the previous example, but the IRQL meaning is different:
kd> !irql Debugger saved IRQL for processor 0x0 -- 12 (SYNCH_LEVEL) [Synchronization level]