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