PspUpdateSingleProcessAffinity
void __fastcall PspUpdateSingleProcessAffinity(__int64 a1, __int64 a2, unsigned __int16 *a3){
INT64 *v6;
int v7;
int v8;
if( (*(_DWORD *)(a2 + 1120) & 0x80000) != 0 )
{
v6 = (INT64 *)(a2 + 1080);
v8 = 0;
v7 = 0;
ExAcquirePushLockSharedEx(a2 + 1080, 0i64);
if( (*(_DWORD *)(a2 + 1120) & 0x80000) != 0 )
v7 = PspSetProcessAffinitySafe(a2, 2, a3, 0i64, &v8);
if( _InterlockedCompareExchange64(v6, 0i64, 17i64) != 17 )
ExfReleasePushLockShared(v6);
KeAbPostRelease(v6);
if( v7 >= 0 )
{
if( v8 )
PspWritePebAffinityInfo(a1, (struct _EX_RUNDOWN_REF *)a2);
}
}
}Referenced by:
PsUpdateActiveProcessAffinity
PspSetProcessAffinityUpdateMode