EtwpRealtimeDisconnectAllConsumers
VOID __fastcall EtwpRealtimeDisconnectAllConsumers(_WMI_LOGGER_CONTEXT *LoggerContext){
struct _DMA_ADAPTER **v2;
struct _DMA_ADAPTER *v3;
struct _DMA_ADAPTER *v4;
struct _KEVENT *v5;
v2 = (struct _DMA_ADAPTER **)((char *)LoggerContext + 344);
while( 1 )
{
v3 = *v2;
if( *v2 == (struct _DMA_ADAPTER *)v2 )
break;
if( (struct _DMA_ADAPTER **)v3->DmaOperations != v2
|| (v4 = *(struct _DMA_ADAPTER **)&v3->Version, *(struct _DMA_ADAPTER **)(*(_QWORD *)&v3->Version + 8i64) != v3) )
{
__fastfail(3u);
}
*v2 = v4;
v4->DmaOperations = (_DMA_OPERATIONS *)v2;
--*((_DWORD *)LoggerContext + 90);
v5 = *(struct _KEVENT **)&v3[3].Version;
BYTE2(v3[5].DmaOperations) |= 4u;
KeSetEvent(v5, 0);
HalPutDmaAdapter(v3);
}
}Referenced by:
EtwpFreeLoggerContext
EtwpLogger