EtwShutdown

VOID __stdcall EtwShutdown(UINT8 HiberBoot){
  _ETW_SILODRIVERSTATE *EtwSiloState; 
  BOOL IsCurrentThreadInServerSilo; 
  BOOL v4; 
  __int16 MaxLoggers; 
  _WMI_LOGGER_CONTEXT *v6; 
  _WMI_LOGGER_INFORMATION LoggerInfo[44]; 

  EtwSiloState = PsGetCurrentServerSiloGlobals((_KSPIN_LOCK *)HiberBoot)->EtwSiloState;
  IsCurrentThreadInServerSilo = PsIsCurrentThreadInServerSilo();
  v4 = IsCurrentThreadInServerSilo;
  if( !HiberBoot )
  {
    if( !IsCurrentThreadInServerSilo )
      EtwpTraceSystemShutdown();
    EtwSiloState->EtwpShutdownInProgress = 1;
  }
  if( !v4 )
    EtwpFlushCoverage();
  memset(LoggerInfo, 0i64, sizeof(LoggerInfo));
  LoggerInfo[0] = 176;
  MaxLoggers = EtwSiloState->MaxLoggers;
  LoggerInfo[11] = 0x20000;
  while( --MaxLoggers >= 0 )
  {
    v6 = EtwpAcquireLoggerContextByLoggerId(EtwSiloState, (unsigned int)MaxLoggers, 0);
    if( v6 )
    {
      if( v4 )
        goto LABEL_19;
      if( HiberBoot )
      {
        if( (v6->LoggerMode & 0x400000) == 0 )
          goto LABEL_8;
LABEL_19:
        if( MaxLoggers )
          LOWORD(LoggerInfo[2]) = MaxLoggers;
        else
          LOWORD(LoggerInfo[2]) = -1;
        *(_GUID *)&LoggerInfo[6] = v6->InstanceGuid;
        EtwpReleaseLoggerContext(v6, 0);
        if( !HiberBoot )
          ++*(&ExBootDevicesRemovedEvent + 755);
        EtwpStopTrace(EtwSiloState, LoggerInfo, 1u);
      }
      else
      {
        if( (v6->LoggerMode & 0x400) == 0 )
          goto LABEL_19;
LABEL_8:
        EtwpReleaseLoggerContext(v6, 0);
      }
    }
  }
  if( !HiberBoot )
    *(&ExBootDevicesRemovedEvent + 755) = 0;
}

Referenced by:

PopGracefulShutdown
PopIssueActionRequest
PspDeleteExternalServerSiloState