EtwpGetTraceGuidList
NTSTATUS __stdcall EtwpGetTraceGuidList(_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;
unsigned int v11;
__int64(**v12)[2];
v3 = 0;
v4 = *(_DWORD *)OutBufferLen >> 4;
v5 = 0;
v8 = 0i64;
for( i = SiloState; ; SiloState = i )
{
NextGuidEntry = EtwpGetNextGuidEntry(SiloState, v8, EtwTraceGuidType);
if( !NextGuidEntry )
break;
if( *(_OWORD *)&NextGuidEntry->Guid != PrivateLoggerNotificationGuid )
{
if( ++v5 > 0xFFFFFFF )
goto LABEL_14;
if( v5 <= v4 )
{
*(_GUID *)Buffer = NextGuidEntry->Guid;
Buffer = (char *)Buffer + 16;
}
}
v8 = NextGuidEntry;
}
v11 = 0;
v12 = &EtwpUmglProviders;
while( ++v5 <= 0xFFFFFFF )
{
if( v5 <= v4 )
{
*(_OWORD *)Buffer = *(_OWORD *)*v12;
Buffer = (char *)Buffer + 16;
}
++v11;
v12 += 2;
if( v11 >= 0xA )
goto LABEL_15;
}
LABEL_14:
v3 = -2147483643;
LABEL_15:
*(_DWORD *)OutBufferLen = 16 * v5;
if( v3 >= 0 && v5 > v4 )
return -1073741789;
return v3;
}Referenced by:
NtTraceControl