PopEtProcessEnumSnapshotCallback
INT64 __fastcall PopEtProcessEnumSnapshotCallback(_QWORD *a1, INT64 a2){
_ETHREAD *CurrentThread;
UINT64 v5;
INT64 result[54];
memset((INT64)result, 0i64);
if( !*(_DWORD *)(a2 + 4) && a1 != PsIdleProcess )
PopEtProcessEnumSnapshotCallback(PsIdleProcess, a2);
if( a1[285] )
{
*(_QWORD *)(a2 + 8) = a1;
*(_QWORD *)(a2 + 24) = result;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v5 = a1[285] + 432i64;
--*((_WORD *)CurrentThread + 242);
ExAcquirePushLockSharedEx(v5, 0i64);
if( a1 == PsIdleProcess )
PopEtIsrDpcQuery((INT64)a1, result);
else
PsQueryProcessEnergyValues((_EPROCESS *)a1, (_PROCESS_ENERGY_VALUES *)result);
PopEtProcessSnapshotUpdate(a2);
PopReleaseRwLock(a1[285] + 432i64);
*(_QWORD *)(a2 + 8) = 0i64;
++*(_DWORD *)(a2 + 4);
}
return 0i64;
}Referenced by:
PopEtProcessEnumSnapshotCallback