EtwpRealtimeSaveState

NTSTATUS __stdcall EtwpRealtimeSaveState(_WMI_LOGGER_CONTEXT *LoggerContext){
  int v2; 
  void *v3; 
  unsigned int RealtimeBuffersSaved; 
  _ETW_REF_CLOCK RealtimeReferenceTime; 
  unsigned __int64 RealtimeLogfileUsage; 
  int UsedProcessorCount; 
  void *RealtimeLogfileHandle; 
  UINT64 FileInformationClass; 
  char FileInformation[8]; 
  _LARGE_INTEGER ByteOffset; 
  _IO_STATUS_BLOCK IoStatusBlock; 
  __int128 Buffer[5]; 

  v2 = -1073741823;
  IoStatusBlock = 0i64;
  memset(Buffer, 0i64, 0x48u);
  ByteOffset.QuadPart = 0i64;
  if( (LoggerContext->Flags & 1) == 0 )
    goto LABEL_2;
  if( !LoggerContext->RealtimeLogfileHandle )
    goto LABEL_7;
  RealtimeBuffersSaved = LoggerContext->RealtimeBuffersSaved;
  if( !RealtimeBuffersSaved )
    goto LABEL_7;
  RealtimeReferenceTime = LoggerContext->RealtimeReferenceTime;
  *((_QWORD *)&Buffer[2] + 1) = LoggerContext->RealtimeReadOffset.QuadPart;
  *(_QWORD *)&Buffer[3] = LoggerContext->RealtimeWriteOffset.QuadPart;
  DWORD1(Buffer[2]) = LoggerContext->BufferSize;
  *((_QWORD *)&Buffer[3] + 1) = LoggerContext->RealtimeLogfileSize.QuadPart;
  RealtimeLogfileUsage = LoggerContext->RealtimeLogfileUsage;
  LODWORD(Buffer[2]) = RealtimeBuffersSaved;
  *(_QWORD *)&Buffer[4] = RealtimeLogfileUsage;
  Buffer[1] = (__int128)RealtimeReferenceTime;
  LODWORD(Buffer[0]) = 1933995090;
  DWORD2(Buffer[0]) = 1;
  UsedProcessorCount = EtwpQueryUsedProcessorCount(LoggerContext);
  RealtimeLogfileHandle = LoggerContext->RealtimeLogfileHandle;
  DWORD1(Buffer[0]) = 0;
  HIDWORD(Buffer[0]) = UsedProcessorCount;
  v2 = ZwWriteFile((_HANDLE)RealtimeLogfileHandle, 0, 0i64, 0i64, &IoStatusBlock, Buffer, 0x48u, &ByteOffset, 0i64);
  if( v2 < 0 )
  {
LABEL_7:
    LoggerContext->RealTimeBuffersLost += LoggerContext->RealtimeBuffersSaved;
    LoggerContext->RealtimeBuffersSaved = 0;
    LoggerContext->RealtimeLogfileUsage = 0i64;
LABEL_2:
    v3 = LoggerContext->RealtimeLogfileHandle;
    FileInformation[0] = 1;
    LODWORD(FileInformationClass) = 13;
    ZwSetInformationFile((UINT64)v3, (UINT64)&IoStatusBlock, FileInformation, 1ui64, FileInformationClass);
  }
  return v2;
}

Referenced by:

EtwpLogger