PsGetProcessDeepFreezeStats
unsigned __int64 __fastcall PsGetProcessDeepFreezeStats(__int64 a1, _QWORD *a2){
_ETHREAD *CurrentThread;
INT64 *v5;
volatile unsigned __int64 InterruptTimeBias;
__int64 v7;
unsigned __int64 result;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
v5 = (INT64 *)(a1 + 1080);
ExAcquirePushLockSharedEx(a1 + 1080, 0i64);
a2[2] = *(_QWORD *)(a1 + 2320);
a2[3] = *(_QWORD *)(a1 + 2224);
do
{
InterruptTimeBias = KUSER_SHARED_DATA.InterruptTimeBias;
*a2 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
}
while( InterruptTimeBias != KUSER_SHARED_DATA.InterruptTimeBias );
if( _InterlockedCompareExchange64(v5, 0i64, 17i64) != 17 )
ExfReleasePushLockShared(v5);
KeAbPostRelease(v5);
KeLeaveCriticalRegionThread((__int64)CurrentThread);
v7 = a2[3];
result = *a2 - InterruptTimeBias;
a2[1] = result;
if( v7 )
{
result -= v7;
a2[2] += result;
}
return result;
}Referenced by:
NtQueryInformationProcess
PfpPrivSourceEnum
PsSetProcessTelemetryAppState