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