IopInsertPassiveInterruptBlock
NTSTATUS __stdcall IopInsertPassiveInterruptBlock(VOID *PassiveInterrupt, _BYTE *NewPassiveBlock){
PASSIVE_INTERRUPT_BLOCK *PassiveInterruptBlockLocked;
VOID **v5;
UINT8 v7;
v7 = 0;
*NewPassiveBlock = 1;
IopAcquireGlobalPassiveInterruptListLock(&v7);
PassiveInterruptBlockLocked = IopFindPassiveInterruptBlockLocked(*((unsigned int *)PassiveInterrupt + 5));
if( !PassiveInterruptBlockLocked )
{
_InterlockedIncrement((volatile signed __int32 *)PassiveInterrupt + 48);
v5 = (VOID **)qword_140C45268;
if( *(_QWORD **)qword_140C45268 != &qword_140C45260 )
__fastfail(3u);
*(_QWORD *)PassiveInterrupt = &qword_140C45260;
*((_QWORD *)PassiveInterrupt + 1) = v5;
*v5 = PassiveInterrupt;
qword_140C45268 = (__int64)PassiveInterrupt;
}
KxReleaseSpinLock(&qword_140C45258);
__writecr8(v7);
if( PassiveInterruptBlockLocked )
*NewPassiveBlock = 0;
return 0;
}Referenced by:
IopAllocatePassiveInterruptBlock