EtwpAcquireLoggerContextByLoggerName

unsigned int *__fastcall EtwpAcquireLoggerContextByLoggerName(__int64 a1, const UNICODE_STRING *a2, char a3){
  unsigned int v6; 
  _WMI_LOGGER_CONTEXT *v7; 
  unsigned int *v8; 
  char v9; 
  if( !a2 )
    return 0i64;
  v6 = 0;
  if( !*(_DWORD *)(a1 + 16) )
    return 0i64;
  while( 1 )
  {
    v7 = EtwpAcquireLoggerContextByLoggerId((_ETW_SILODRIVERSTATE *)a1, v6, 0);
    v8 = (unsigned int *)v7;
    if( v7 )
      break;
LABEL_7:
    if( ++v6 >= *(_DWORD *)(a1 + 16) )
      return 0i64;
  }
  if( !RtlEqualUnicodeString((UNICODE_STRING *)((char *)v7 + 152), (UNICODE_STRING *)a2, 1u) )
  {
    v9 = 0;
LABEL_6:
    EtwpReleaseLoggerContext(v8, v9);
    goto LABEL_7;
  }
  if( a3 == 1 )
    KeWaitForSingleObject(v8 + 162, Executive, 0, 0, 0i64);
  if( !v8[84] )
  {
    v9 = a3;
    goto LABEL_6;
  }
  return v8;
}

Referenced by:

EtwQueryTraceHandleByLoggerName
EtwpAcquireLoggerContext