EtwpProcessThreadImageRundown
INT64 __fastcall EtwpProcessThreadImageRundown(_PERFINFO_GROUPMASK *GroupMasks, UINT64 LoggerId, UINT8 Start){
unsigned int **v3;
NTSTATUS v7;
unsigned int **v8;
INT16 v9;
unsigned int v11;
_DWORD *v12;
INT64 result[2];
PVOID P;
__int16 v15;
UINT64 v16;
PVOID v17;
UINT8 v18;
UINT8 IsStackWalkingEnabled;
_EPROCESS *Process;
unsigned int v21;
Process = 0i64;
v7 = 0;
v8 = v3;
memset((INT64)result, 0i64);
result[0] = (INT64)GroupMasks;
v16 = LoggerId;
v9 = 1283;
v18 = Start;
if( !Start )
v9 = 1284;
IsStackWalkingEnabled = EtwpIsStackWalkingEnabled(LoggerId, v9);
if( GroupMasks && (GroupMasks->Masks[4] & 0x40) != 0 && (*(_DWORD *)(LoggerId + 12) & 0x2000000) != 0 )
result[1] = (INT64)EtwpObjectTypeFilter + 20 * *(unsigned __int8 *)(LoggerId + 834);
P = ExAllocatePoolWithTag(NonPagedPoolNx, 0x2000ui64, 0x74777445ui64);
if( P )
v15 = 0x2000;
if( v21 && v8 )
{
v11 = 0;
v12 = (_DWORD *)v8 + 3;
while( *v12 != -2147483644 )
{
++v11;
v12 += 4;
if( v11 >= v21 )
goto LABEL_8;
}
v7 = PsLookupProcessByProcessId((HANDLE)**v8, (PEPROCESS *)&Process);
if( v7 >= 0 )
EtwpProcessEnumCallback(Process, result);
}
else
{
LABEL_8:
EtwpProcessEnumCallback((_EPROCESS *)PsIdleProcess, result);
PsEnumProcesses((__int64(__fastcall *)(unsigned __int64, __int64))EtwpProcessEnumCallback, (__int64)result);
}
if( P )
ExFreePoolWithTag(P, 0);
if( v17 )
ExFreePoolWithTag(v17, 0);
return(unsigned int)v7;
}Referenced by:
EtwpKernelTraceRundown