14.1 Timer Routine Requirements
Any NT driver can have as many IoTimer routines as the device objects it creates and any number of CustomTimerDpc routines.
NT drivers can use these routines to monitor whether an I/O operation timed out, to restart device operations that have timed out, to log errors when an operation has timed out or a device error has occurred, or for any other purpose the driver designer chooses.
An IoTimer or CustomTimerDpc routine runs at IRQL DISPATCH_LEVEL, and it is run in an arbitrary thread context.
Running at IRQL DISPATCH_LEVEL restricts the set of support routines an IoTimer or CustomTimerDpc 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.