IoConnectInterrupt вызывается на IRQL = PASSIVE_LEVEL?
Функция прерывания должна быть уже полностью готова к обработке пришедших прерываний, кроме того, Ваш обработчик прерывания обязан корректно отлавливать только ваши прерывания, и отдавать управление в противном случае - return FALSE (TRUE - если вы его обнработали).
Уточните у разработчика вашей платы - он прерывания при старте не поднимает? у меня именно так и происходило;))
Функция должна быть размещена в НЕсвопируемой памяти, в функции использовать ТОЛЬКО переменные расположенные в несвопируемой памяти. Кроме того, нельзя вызывать функции ядра, которые исполняются на IRQL ниже того на котором вызывается прерывание.
"A driver's InterruptService routine (ISR) executes in an interrupt context, at some system-assigned DIRQL, as specified by the SynchronizeIrql parameter to IoConnectInterrupt. (Other devices, with higher DIRQL values, can interrupt the ISR.)"
если что то надо исполнить - используйте DPC.
Удачи,
Ochkarik