Performance Insights
Windows stop code · 0x000000D1

0xD1 DRIVER_IRQL_NOT_LESS_OR_EQUAL

What stop code 0xD1 DRIVER_IRQL_NOT_LESS_OR_EQUAL means, how to read its four parameters, and the WinDbg commands that point at the faulting driver.

Published 2026-10-20 by PerformanceInsights.ai

Short answer: 0xD1 means a kernel driver touched memory it wasn't allowed to touch at a raised IRQL. Usually it's a bad pointer (NULL, freed or garbage), sometimes pageable memory used at DISPATCH_LEVEL or above. Parameter 4 is the instruction that made the access: ln on it names the function and driver. Despite the name, the IRQL is rarely the real problem; the address is.

Parameters

ParameterMeaning
1The memory address referenced. A small value like 0x0 or 0x28 means a NULL pointer plus a structure offset.
2IRQL at the time (2 = DISPATCH_LEVEL).
3The access type: 0 = read, 1 = write, 2 or 8 = execute.
4The address of the instruction that made the reference.

Source: Microsoft Learn, Bug Check 0xD1.

Reading the dump

!analyze -v                 # MODULE_NAME / IMAGE_NAME, and the four arguments
dx KiBugCheckDriver         # the driver Windows named on the blue screen
ln <Arg4>                   # function that made the access
.trap <address>             # if !analyze shows a TRAP_FRAME, switch to it, then:
kv                          # stack at the faulting instruction
ub <Arg4>                   # the instructions just before the access
!pool <Arg1>                # is the address in pool, and is it freed?
!pte <Arg1>                 # is it mapped at all
lmvm <driver>               # version and date of the suspect

Typical causes and fixes

Rather not read the dump yourself?

Upload it to DumpTriage. It runs the debugger, reads the output and sends back the faulting module, the stack and a plain-language root cause. Cases the automated passes can't settle go to an engineer. Free during the pilot.

Create an account