IoProcessPassiveInterrupts
VOID __stdcall IoProcessPassiveInterrupts(UINT64 Vector){
__int64 PassiveInterruptBlock;
__int64 v2;
bool v3;
unsigned __int8 v4;
v4 = 0;
PassiveInterruptBlock = IopFindPassiveInterruptBlock(Vector);
v2 = PassiveInterruptBlock;
if( PassiveInterruptBlock )
{
if( !*(_DWORD *)(PassiveInterruptBlock + 32) )
((void(__fastcall *)(_QWORD, __int64))off_140C00770[0])(*(unsigned int *)(PassiveInterruptBlock + 24), 1i64);
IopAcquirePassiveInterruptBlockLock(v2, &v4);
v3 = *(_BYTE *)(v2 + 64) == 0;
*(_BYTE *)(v2 + 65) = 1;
if( v3 )
{
*(_BYTE *)(v2 + 64) = 1;
KiInsertQueueDpc((_KDPC *)(v2 + 104), 0i64, 0i64, 0i64, 0);
}
KxReleaseSpinLock((UINT64 *)(v2 + 56));
__writecr8(v4);
}
}Referenced by:
KiDispatchPassiveInterrupts
KiInterruptDispatchCommon