ISR Not Getting Called From PrepareHardware as well as D0Entry

Hi Guys,

I have a observation that I need to confirm. I am seeing that when I fire a (internal) command from Prepare Hardware or from D0 entry, the ISR never gets called. When I create a thread and then return from Prepare hardware and fire the command from the thread, I am seeing that the ISR gets called.

I have claimed the interrupts and all resources in prepare hardware itself and all set to fire the commands.

Is this expected?


I think the interrupt idt is hooked only after EvtInteruptEnable(), so for non-shared interrupts (MSI/X), interrupts that got generated before EvtInterruptEnale(MsgId) gets dropped. For line interrupts if one is lucky the isr() get invoked by chance even before InterruptEnale()

Right. When you call WdfInterruptCreate, that just lets the KMDF framework know that it needs to claim the interrupt later. It won’t be claimed until your EvtInterruptEnable is called.