EtwpSynchronizeWithLogger
__int64 __fastcall EtwpSynchronizeWithLogger(__int64 a1, UINT64 a2, UINT8 a3, UINT8 a4){
void *v4;
unsigned int v6;
unsigned int v7;
UINT64 v8;
UINT8 v9;
UINT8 v10;
IRP *v12;
IRP *v13;
v4 = (void *)(a1 + 472);
v6 = a2;
KeResetEvent((VOID *)(a1 + 472), a2, a3, a4, v12);
_InterlockedOr((volatile signed __int32 *)(a1 + 836), v6);
if( ObGetCurrentIrql() > 2u )
{
if( !_interlockedbittestandset((volatile signed __int32 *)(a1 + 836), 8u) )
KeInsertQueueDpc((PRKDPC)(a1 + 584), 0i64, 0i64);
}
else
{
KeSetEvent((PRKEVENT)(a1 + 496), 0);
}
KeWaitForSingleObject(v4, Executive, 0, 0, 0i64);
v7 = *(_DWORD *)(a1 + 56);
KeResetEvent(v4, v8, v9, v10, v13);
*(_DWORD *)(a1 + 56) = 0;
return v7;
}Referenced by:
EtwpFlushTrace
EtwpRealtimeConnect
EtwpRealtimeDisconnectConsumer
EtwpUpdateTrace