EtwpSetProviderTraitsKm

NTSTATUS __stdcall EtwpSetProviderTraitsKm(_ETW_REG_ENTRY *RegEntry, VOID *TraitsInput, UINT16 TraitsSize){
  unsigned __int16 Flags; 
  size_t v6; 
  NTSTATUS v7; 
  VOID **PoolWithTag; 
  int v9; 
  __int64 v10; 
  __int64 v11; 
  __int64 v12; 
  __int64 v14; 
  int v15; 

  v15 = 0;
  Flags = RegEntry->Flags;
  v6 = TraitsSize;
  if( (Flags & 8) != 0 || (Flags & 1) == 0 )
  {
    v7 = -1073741811;
LABEL_9:
    if( !v7 )
      return v7;
    goto LABEL_10;
  }
  if( RegEntry->Traits )
  {
    v7 = -1073741823;
    goto LABEL_10;
  }
  PoolWithTag = ExAllocatePoolWithTag(0x200ui64, (unsigned int)TraitsSize + 28, 1417114693i64);
  v9 = HIDWORD(PoolWithTag);
  if( PoolWithTag )
  {
    memmove((char *)PoolWithTag + 28, TraitsInput, v6);
    HIDWORD(v14) = v9;
    v7 = EtwpSetProviderTraitsCommon(0i64, 0i64, (_FAST_MUTEX *)&v15, (_RTL_RB_TREE *)RegEntry);
    goto LABEL_9;
  }
  v7 = -1073741670;
LABEL_10:
  if( EtwEventEnabled(*(&ExBootDevicesRemovedEvent + 241), &ETW_EVENT_SET_TRAITS_FAILED) )
  {
    LODWORD(v14) = v7;
    EtwpEventWriteRegistrationStatus(v11, v10, v12, (__int64)RegEntry, v14);
  }
  return v7;
}

Referenced by:

EtwSetInformation