PopPepLockActivityLink
char __fastcall PopPepLockActivityLink(__int64 a1, INT64 *a2, unsigned int a3, unsigned int a4, UINT8 *a5){
char v5;
UINT8 v9;
bool v10;
unsigned __int64 v11;
v5 = 0;
if( !a2 || *(_DWORD *)(a1 + 180) == 1 )
goto LABEL_3;
if( a3 == 6 )
{
if( a4 == 6 )
goto LABEL_3;
}
else if( a3 <= 5 && ActivityAttributes[136 * a3] == 1 )
{
goto LABEL_3;
}
if( a4 > 5 || ActivityAttributes[136 * a4] != 1 )
{
v9 = ExAcquireSpinLockShared((INT64 *)(a1 + 64));
v10 = *(_BYTE *)(a1 + 125) == 1;
v11 = v9;
*a5 = v9;
if( !v10 )
{
ExAcquireSpinLockExclusiveAtDpcLevel(a2);
return v5;
}
ExReleaseSpinLockSharedFromDpcLevel((PEX_SPIN_LOCK)(a1 + 64));
__writecr8(v11);
}
LABEL_3:
*a5 = ExAcquireSpinLockExclusive((INT64 *)(a1 + 64));
v5 = 1;
*(_BYTE *)(a1 + 125) = 1;
return v5;
}Referenced by:
PopPepCompleteComponentIdleState
PopPepComponentSetLatency
PopPepComponentSetResidency
PopPepComponentSetWakeHint
PopPepProcessEvent