If an NT driver has an ISR, it also must have a DpcForIsr or CustomDpc routine to complete its processing of interrupt-driven I/O operations.
A DpcForIsr or CustomDpc routine is run in an arbitrary thread context at IRQL DISPATCH_LEVEL.
Running at IRQL DISPATCH_LEVEL restricts the set of support routines a DpcForIsr or CustomDpc routine can call.
For more information about managing IRQLs in NT drivers, see Chapter 16. For specific information about the IRQL(s) at which any particular support routine can be called, see the Kernel-mode Driver Reference.