EtwpDisableTraceProviders

VOID __stdcall EtwpDisableTraceProviders(_ETW_SILODRIVERSTATE *SiloState, UINT64 LoggerId){
  unsigned int v2; 
  unsigned __int16 *UserModeGlobalLogger; 
  _ETW_GUID_ENTRY *i; 
  _ETW_GUID_ENTRY *v6; 
  _ETW_GUID_ENTRY *j; 
  _ETW_GUID_ENTRY *NextGuidEntry; 
  _ETW_GUID_ENTRY *v9; 
  _EPROCESS *v10; 
  VOID *v11; 
  unsigned int k; 
  PLARGE_INTEGER Timeout; 
  INT64 CallBack; 

  v2 = LoggerId;
  if( SiloState == (_ETW_SILODRIVERSTATE *)EtwpHostSiloState )
    UserModeGlobalLogger = (_WORD *)(&KUSER_SHARED_DATA + 896);
  else
    UserModeGlobalLogger = SiloState->SiloGlobals->UserSharedData->UserModeGlobalLogger;
  for( i = EtwpGetNextGuidEntry(SiloState, 0i64, EtwTraceGuidType);
        ;
        i = EtwpGetNextGuidEntry(SiloState, v6, EtwTraceGuidType) )
  {
    v6 = i;
    if( !i )
      break;
    EtwpClearSessionAndUnreferenceEntry(v2, i, 0);
  }
  for( j = 0i64; ; j = v9 )
  {
    NextGuidEntry = EtwpGetNextGuidEntry(SiloState, j, EtwGroupGuidType);
    v9 = NextGuidEntry;
    if( !NextGuidEntry )
      break;
    EtwpClearSessionAndUnreferenceEntry(v2, NextGuidEntry, 2u);
  }
  KeWaitForSingleObject((UINT64)&ExBootDevicesRemovedEvent + 1376, 0, 0, 0, 0i64);
  for( k = 0; k < 9; ++k )
  {
    if( *(_BYTE *)UserModeGlobalLogger == (_BYTE)v2 )
    {
      if( k <= 1 )
      {
        CallBack = k;
        PsEnumProcesses((INT64)EtwpUpdateProcessTracingCallback, &CallBack, v10, v11, Timeout);
      }
      *UserModeGlobalLogger = 0;
    }
    ++UserModeGlobalLogger;
  }
  KeReleaseMutex((_KMUTANT *)((char *)&ExBootDevicesRemovedEvent + 1376), 0);
}

Referenced by:

EtwpStopLoggerInstance