EtwpEnableDisableSpecialGuids
NTSTATUS __fastcall EtwpEnableDisableSpecialGuids(
_ETW_SILODRIVERSTATE *SiloState,
INT64 *a2,
UINT16 a3,
INT64 a4,
UINT64 UMGLProviderIndex,
INT64 a6,
INT64 a7,
INT64 a8){
UINT8 v8;
unsigned int v9;
NTSTATUS v12;
UINT64 LoggerId;
UINT8 v14;
char v15;
unsigned int v16;
__int64(**v17)[2];
INT64 v18;
INT64 v19;
unsigned __int64 v20;
INT64 v22;
NTSTATUS v23;
INT64 v25;
v8 = 1;
v9 = a3;
v12 = -1073741275;
LoggerId = 2i64;
*(_BYTE *)a8 = 1;
if( (_DWORD)a4 != 2 )
{
v14 = 0;
if( (_DWORD)a4 == 1 )
{
v15 = 1;
}
else
{
if( (_DWORD)a4 )
goto LABEL_12;
v15 = 0;
}
v16 = 0;
v17 = &EtwpUmglProviders;
do
{
v18 = *a2;
v19 = (**v17)[0] - *a2;
if( !v19 )
v19 = (**v17)[1] - a2[1];
if( !v19 )
{
LOBYTE(LoggerId) = v15;
return EtwpEnableDisableUMGL((UINT8)SiloState, LoggerId, v9, (unsigned int)UMGLProviderIndex);
}
++v16;
v17 += 2;
}
while( v16 < 0xA );
v20 = KernelRundownGuid - v18;
if( KernelRundownGuid == v18 )
v20 = 0xCDF584518E9C7793ui64 - a2[1];
if( v20 )
goto LABEL_12;
if( v15 == 1 )
{
switch( (_DWORD)UMGLProviderIndex )
{
case 1:
LoggerId = SiloState->SystemLoggerSettings.EtwpSystemLogger[0].LoggerId;
break;
case 2:
LoggerId = SiloState->SystemLoggerSettings.EtwpSystemLogger[0].LoggerId;
return EtwpCheckLoggerAccessAndDoRundown(SiloState, LoggerId, v9, v14);
case 4:
break;
default:
if( (_DWORD)UMGLProviderIndex != 8 && (_DWORD)UMGLProviderIndex == 16 )
return EtwpLogFileNameRundown((UINT64)SiloState);
return EtwpCheckLoggerAccessAndDoRundown(SiloState, LoggerId, v9, v14);
}
v14 = 1;
return EtwpCheckLoggerAccessAndDoRundown(SiloState, LoggerId, v9, v14);
}
return 0;
}
v22 = *(_QWORD *)&SystemTraceControlGuid.Data1 - *a2;
if( *(_QWORD *)&SystemTraceControlGuid.Data1 == *a2 )
v22 = *(_QWORD *)SystemTraceControlGuid.Data4 - a2[1];
v23 = 0;
if( v22 || SiloState != (_ETW_SILODRIVERSTATE *)EtwpHostSiloState )
{
LABEL_12:
*(_BYTE *)a8 = 0;
return v12;
}
if( (_DWORD)UMGLProviderIndex == 1 )
goto LABEL_23;
if( (_DWORD)UMGLProviderIndex == 2 )
{
v8 = 0;
LABEL_23:
LODWORD(v25) = a7;
return EtwpCheckGuidAccessAndDoRundown(SiloState, 2i64, v9, v8, a6, v25);
}
return v23;
}Referenced by:
EtwpEnableGuid