PfTAccessTracingStart
void __fastcall PfTAccessTracingStart(__int64 a1, __int64 a2, int a3){
_ETHREAD *CurrentThread;
volatile INT64 *v7;
int v8;
bool v9;
unsigned int DefaultPagePriority;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
v7 = (volatile INT64 *)(a1 + 16);
ExAcquirePushLockExclusiveEx(a1 + 16, 0i64);
v8 = ~a3;
v9 = (v8 & *(_DWORD *)(a1 + 12)) == 0;
*(_DWORD *)(a1 + 12) &= v8;
if( v9 )
{
*(_DWORD *)(a2 + 40) = 256;
DefaultPagePriority = MmGetDefaultPagePriority();
MmSetAccessLogging(1ui64, DefaultPagePriority);
MmEnablePeriodicAccessClearing(1u);
}
if( (_InterlockedExchangeAdd64(v7, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock(v7);
KeAbPostRelease((PVOID)v7);
KeLeaveCriticalRegion();
}Referenced by:
PfGetCompletedTrace
PfTStart
PfpPowerActionStartScenarioTracing