EtwpDisableTraceProviders
VOID __fastcall EtwpDisableTraceProviders(_ETW_SILODRIVERSTATE *SiloState, UINT64 LoggerId){
unsigned int v2;
unsigned __int16 *UserModeGlobalLogger;
volatile INT64 *i;
volatile INT64 *v6;
volatile INT64 *j;
volatile INT64 *NextGuidEntry;
volatile INT64 *v9;
unsigned int k;
__int64 v11;
v2 = LoggerId;
if( SiloState == (_ETW_SILODRIVERSTATE *)EtwpHostSiloState )
UserModeGlobalLogger = (_WORD *)(&KUSER_SHARED_DATA + 896);
else
UserModeGlobalLogger = SiloState->SiloGlobals->UserSharedData->UserModeGlobalLogger;
for( i = EtwpGetNextGuidEntry((INT64)SiloState, 0i64, 0i64); ; i = EtwpGetNextGuidEntry((INT64)SiloState, v6, 0i64) )
{
v6 = i;
if( !i )
break;
EtwpClearSessionAndUnreferenceEntry(v2, (INT64)i, 0);
}
for( j = 0i64; ; j = v9 )
{
NextGuidEntry = EtwpGetNextGuidEntry((INT64)SiloState, j, 2i64);
v9 = NextGuidEntry;
if( !NextGuidEntry )
break;
EtwpClearSessionAndUnreferenceEntry(v2, (INT64)NextGuidEntry, 2);
}
KeWaitForSingleObject(&EtwpGlobalMutex, Executive, 0, 0, 0i64);
for( k = 0; k < 9; ++k )
{
if( *(_BYTE *)UserModeGlobalLogger == (_BYTE)v2 )
{
if( k <= 1 )
{
v11 = k;
PsEnumProcesses(
(__int64(__fastcall *)(unsigned __int64, __int64))EtwpUpdateProcessTracingCallback,
(__int64)&v11);
}
*UserModeGlobalLogger = 0;
}
++UserModeGlobalLogger;
}
KeReleaseMutex(&EtwpGlobalMutex, 0);
}Referenced by:
EtwpStopLoggerInstance