PfpScenCtxServiceThreadSet
VOID __fastcall PfpScenCtxServiceThreadSet(volatile INT64 *a1, INT64 a2){
HANDLE v2;
_ETHREAD *CurrentThread;
HANDLE ThreadId;
__int64 v6;
_ETHREAD *v7;
char v8;
v2 = 0i64;
if( (_DWORD)a2 )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
ThreadId = PsGetThreadId((PETHREAD)CurrentThread);
v6 = *((_QWORD *)CurrentThread + 134);
v2 = ThreadId;
}
else
{
v6 = 0i64;
}
v7 = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)v7 + 242);
ExAcquirePushLockExclusiveEx((UINT64)a1, 0i64);
*((_QWORD *)a1 + 9) = v2;
*((_QWORD *)a1 + 10) = v6;
v8 = _InterlockedExchangeAdd64(a1, 0xFFFFFFFFFFFFFFFFui64);
if( (v8 & 2) != 0 && (v8 & 4) == 0 )
ExfTryToWakePushLock(a1);
KeAbPostRelease((PVOID)a1);
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
}Referenced by:
PfSetSuperfetchInformation