EtwpDequeueBuffer
VOID __fastcall EtwpDequeueBuffer(_WMI_LOGGER_CONTEXT *LoggerContext, _ETW_BUFFER_QUEUE *Queue){
_SINGLE_LIST_ENTRY *p_QueueEntry;
_SINGLE_LIST_ENTRY *Next;
p_QueueEntry = &Queue->QueueEntry;
while( 1 )
{
Next = p_QueueEntry->Next;
if( !p_QueueEntry->Next )
break;
p_QueueEntry->Next = Next->Next;
if( Next->Next )
Next->Next = 0i64;
else
Queue->QueueTail = p_QueueEntry;
if( HIDWORD(Next[1].Next) != 6 )
break;
Next->Next = *(_SINGLE_LIST_ENTRY **)((char *)LoggerContext + 1168);
*((_QWORD *)LoggerContext + 146) = Next;
}
}Referenced by:
EtwpAdjustSiloTraceBuffers
EtwpDequeueFreeBuffer
EtwpFreeTraceBufferPool