EtwpSetProviderBinaryTracking

NTSTATUS __stdcall EtwpSetProviderBinaryTracking(_ETW_SILODRIVERSTATE *SiloState, UINT64 a2, INT8 a3){
  NTSTATUS v5; 
  _WMI_LOGGER_CONTEXT *v6; 
  _WMI_LOGGER_CONTEXT *v7; 
  _ETW_GUID_ENTRY *i; 
  _EX_PUSH_LOCK *NextGuidEntry; 
  _EX_PUSH_LOCK *v10; 
  _ETW_GUID_ENTRY *j; 
  _EX_PUSH_LOCK *v12; 
  _EX_PUSH_LOCK *v13; 

  v5 = 0;
  v6 = EtwpAcquireLoggerContextByLoggerId(SiloState, a2, 0);
  v7 = v6;
  if( !v6 )
    return -1073741811;
  if( a3 )
  {
    _InterlockedOr((volatile signed __int32 *)&v6->832, 0x2000000u);
    for( i = 0i64; ; i = (_ETW_GUID_ENTRY *)v10 )
    {
      NextGuidEntry = (_EX_PUSH_LOCK *)EtwpGetNextGuidEntry(SiloState, i, EtwTraceGuidType);
      v10 = NextGuidEntry;
      if( !NextGuidEntry )
        break;
      EtwpTrackGuidEntryRegistrations(v7, NextGuidEntry, 0);
    }
    for( j = 0i64; ; j = (_ETW_GUID_ENTRY *)v13 )
    {
      v12 = (_EX_PUSH_LOCK *)EtwpGetNextGuidEntry(SiloState, j, EtwGroupGuidType);
      v13 = v12;
      if( !v12 )
        break;
      EtwpTrackGuidEntryRegistrations(v7, v12, 2);
    }
  }
  else
  {
    _InterlockedAnd((volatile signed __int32 *)&v6->832, 0xFDFFFFFF);
  }
  EtwpReleaseLoggerContext(v7, 0);
  return v5;
}

Referenced by:

NtTraceControl