HalpFindSecondaryIcEntry
LIST_ENTRY *__fastcall HalpFindSecondaryIcEntry(UINT64 InputGsiv){
unsigned int v1;
unsigned __int8 v2;
__int64 v3;
unsigned __int64 v4;
LIST_ENTRY *v5;
unsigned int v6;
v1 = InputGsiv;
v2 = HalpAcquireHighLevelLock(&SecondaryIcListSpinLock);
v3 = SecondaryIcList;
v4 = v2;
v5 = 0i64;
while( (__int64 *)v3 != &SecondaryIcList )
{
v6 = *(_DWORD *)(v3 + 16);
if( v1 >= v6 && v1 < v6 + *(_DWORD *)(v3 + 20) )
{
v5 = (LIST_ENTRY *)v3;
_InterlockedIncrement((volatile signed __int32 *)(v3 + 112));
break;
}
v3 = *(_QWORD *)v3;
}
KxReleaseSpinLock(&SecondaryIcListSpinLock);
__writecr8(v4);
return v5;
}Referenced by:
HalpDisableSecondaryInterrupt
HalpEnableSecondaryInterrupt
HalpHandleMaskUnmaskSecondaryInterrupt
HalpInterruptRequestSecondaryInterrupt
HalpQueryPrimaryInterruptInformation