EtwpReenableCompression

VOID __stdcall EtwpReenableCompression(_WMI_LOGGER_CONTEXT *LoggerContext){
  bool v1; 
  _SINGLE_LIST_ENTRY *Next; 
  int i; 
  _SINGLE_LIST_ENTRY *j; 
  _ETW_LOCK_HANDLE LockHandle; 

  v1 = LoggerContext->CompressionResumptionMode == EtwCompressionModeNoRestart;
  LockHandle.OldIrql = 0;
  if( !v1 && ObGetCurrentIrql() < 2u && _InterlockedExchange(&LoggerContext->CompressionOn, 1) != 1 )
  {
    EtwpLockBufferList(LoggerContext, &LockHandle);
    Next = LoggerContext->OverflowQueue.QueueEntry.Next;
    for( i = EtwpQueryUsedProcessorCount(LoggerContext); i && Next; --i )
    {
      if( HIDWORD(Next[1].Next) == 4 )
        WORD2(Next[2].Next) |= 0x80u;
      Next = Next->Next;
    }
    for( j = LoggerContext->BufferQueue.QueueEntry.Next; i && j; j = j->Next )
    {
      --i;
      if( HIDWORD(j[1].Next) == 4 )
        WORD2(j[2].Next) |= 0x80u;
    }
    EtwpUnlockBufferList(LoggerContext, &LockHandle);
  }
}

Referenced by:

EtwpPrepareDirtyBuffer