The code for supporting and servicing interrupts is similar in WDF and WDM drivers. There is one primary difference:
- A WDF driver creates the WDFINTERRUPT object and registers its interrupt service routine (ISR) callback by calling WdfInterruptCreate from its EvtDriverDeviceAdd callback.
- A WDM driver creates a KINTERRUPT structure and connects it during IRP_MN_START_DEVICE processing.
The EvtInterruptIsr callback in a WDF driver performs the same tasks as the WDM driver’s InterruptService routine. The EvtInterruptIsr callback calls WdfInterruptQueueDpcForIsr to queue the EvtInterruptDpc callback for later processing at DISPATCH_LEVEL. In response, the framework adds a DPC object to the system queue that runs this callback.
For more information about framework interrupt objects, see Handling Hardware Interrupts.