EtwpGetTraceGroupList
NTSTATUS __stdcall EtwpGetTraceGroupList(_ETW_SILODRIVERSTATE *SiloState, VOID *Buffer, UINT64 *OutBufferLen){
NTSTATUS v3;
unsigned int v4;
unsigned int v5;
_ETW_GUID_ENTRY *v8;
_ETW_SILODRIVERSTATE *i;
_ETW_GUID_ENTRY *NextGuidEntry;
v3 = 0;
v4 = *(_DWORD *)OutBufferLen >> 4;
v5 = 0;
v8 = 0i64;
for( i = SiloState; ; SiloState = i )
{
NextGuidEntry = EtwpGetNextGuidEntry(SiloState, v8, EtwGroupGuidType);
if( !NextGuidEntry )
break;
if( ++v5 > 0xFFFFFFF )
{
v3 = -2147483643;
break;
}
if( v5 <= v4 )
{
*(_GUID *)Buffer = NextGuidEntry->Guid;
Buffer = (char *)Buffer + 16;
}
v8 = NextGuidEntry;
}
*(_DWORD *)OutBufferLen = 16 * v5;
if( v3 >= 0 && v5 > v4 )
return -1073741789;
return v3;
}Referenced by:
NtTraceControl