EtwpOpenLogger

_WMI_LOGGER_CONTEXT *__stdcall EtwpOpenLogger(
        UINT64 LoggerId,
        _ETW_SILODRIVERSTATE *SiloState,
        INT8 RequestorMode,
        _ETW_LOGGER_HANDLE *LoggerHandle){
  __int64 v4; 
  _ETHREAD *CurrentThread; 
  __int64 v8; 
  _WMI_LOGGER_CONTEXT *result; 

  v4 = (unsigned int)LoggerId;
  LoggerHandle->DereferenceAndLeave = 0;
  if( RequestorMode == 1 || ObGetCurrentIrql() < 2u )
  {
    CurrentThread = (_ETHREAD *)KeGetCurrentThread();
    --CurrentThread->Tcb.KernelApcDisable;
    v8 = v4;
    if( !ExAcquireRundownProtectionCacheAwareEx((INT64)SiloState->EtwpLoggerRundown[v4], 1i64) )
    {
      KeLeaveCriticalRegion();
      return 0i64;
    }
    LoggerHandle->DereferenceAndLeave = 1;
  }
  else
  {
    v8 = v4;
  }
  result = SiloState->EtwpLoggerContext[v8];
  if( ((unsigned __int8)result & 1) != 0 )
  {
    EtwpCloseLogger((unsigned int)v4, SiloState, (_ETW_LOGGER_HANDLE)LoggerHandle->DereferenceAndLeave);
    return 0i64;
  }
  return result;
}

Referenced by:

EtwSendTraceBuffer
EtwTraceEvent
EtwTraceRaw
EtwpCCSwapFlush
EtwpKernelTraceRundown
EtwpLogSystemEventUnsafe
EtwpTraceMessageVa
NtTraceEvent