EtwpSetMark

NTSTATUS __stdcall EtwpSetMark(
        UINT64 LoggerId,
        _ETW_SET_MARK_INFORMATION *MarkInfo,
        UINT64 MarkSize,
        UINT8 AllowFlush,
        INT8 RequestorMode){
  int v5; 
  NTSTATUS v8; 
  char v9; 
  INT64 a5; 
  UINT64 a7; 
  INT64 a2; 
  int v14; 
  int v15; 
  __int64 *v16; 
  int v17; 
  int v18; 

  v5 = MarkSize;
  v8 = 0;
  if( (unsigned int)MarkSize <= 4 )
    return -1073741811;
  if( (unsigned int)MarkSize > 0xFFDD )
    return -1073741675;
  if( RequestorMode )
  {
    if( ((unsigned __int8)MarkInfo & 3) != 0 )
      ExRaiseDatatypeMisalignment();
    if( (unsigned __int64)MarkInfo + (unsigned int)MarkSize > 0x7FFFFFFF0000i64
      || (_ETW_SET_MARK_INFORMATION *)((char *)MarkInfo + (unsigned int)MarkSize) < MarkInfo )
    {
      MEMORY[0x7FFFFFFF0000] = 0;
    }
  }
  v9 = 0;
  if( (MarkInfo->Flag & 1) != 0 && AllowFlush )
  {
    if( SeSinglePrivilegeCheck(*(_QWORD *)&SeDebugPrivilege, RequestorMode) )
    {
      v9 = 1;
      MmEmptyAllWorkingSets();
    }
    else
    {
      v8 = -1073741727;
    }
  }
  a2 = (INT64)MarkInfo->Mark;
  v14 = v5 - 4;
  v15 = 0;
  v16 = &EtwpNull;
  v17 = 2;
  v18 = 0;
  LODWORD(a7) = 12544;
  LODWORD(a5) = 2;
  EtwpLogSystemEventUnsafe(
    *(_ETW_SILODRIVERSTATE **)(LoggerId + 1080),
    (INT64)&a2,
    (INT64)KeGetCurrentThread(),
    *(unsigned int *)LoggerId,
    a5,
    3874,
    a7);
  if( v9 )
    MmIdentifyPhysicalMemory(*(_QWORD *)(LoggerId + 1080), *(unsigned int *)LoggerId, 0x275ui64);
  return v8;
}

Referenced by:

EtwpLogRefSetAutoMark
NtTraceEvent