IoProcessPassiveInterrupts
VOID __stdcall IoProcessPassiveInterrupts(UINT64 Vector){
PASSIVE_INTERRUPT_BLOCK *PassiveInterruptBlock;
PASSIVE_INTERRUPT_BLOCK *v2;
bool v3;
UINT8 OldIrql;
OldIrql = 0;
PassiveInterruptBlock = IopFindPassiveInterruptBlock(Vector);
v2 = PassiveInterruptBlock;
if( PassiveInterruptBlock )
{
if( !PassiveInterruptBlock[8] )
((void(__fastcall *)(_QWORD, __int64))off_140C00770[0])((unsigned int)PassiveInterruptBlock[6], 1i64);
IopAcquirePassiveInterruptBlockLock(v2, &OldIrql);
v3 = *((_BYTE *)v2 + 64) == 0;
*((_BYTE *)v2 + 65) = 1;
if( v3 )
{
*((_BYTE *)v2 + 64) = 1;
KiInsertQueueDpc((_KDPC *)(v2 + 26), 0i64, 0i64, 0i64, 0);
}
KxReleaseSpinLock((UINT64 *)v2 + 7);
__writecr8(OldIrql);
}
}Referenced by:
KiDispatchPassiveInterrupts
KiInterruptDispatchCommon