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