EtwRegisterEventCallback
INT64 __fastcall EtwRegisterEventCallback(UINT64 a1, INT64 a2, INT64 a3){
unsigned int v5;
unsigned int v6;
_ETW_SILODRIVERSTATE *v7;
_ETHREAD *CurrentThread;
_WMI_LOGGER_CONTEXT *v9;
_QWORD *PoolWithTag;
v5 = a1;
v6 = 0;
v7 = (_ETW_SILODRIVERSTATE *)PsGetCurrentServerSiloGlobals()[108];
if( !a2 || a2 != qword_140CFBB98 )
return 3221225506i64;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
v9 = EtwpAcquireLoggerContextByLoggerId(v7, v5, 0);
if( v9 )
{
PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 0x10ui64, 0x43777445ui64);
if( PoolWithTag )
{
PoolWithTag[1] = a3;
if( _InterlockedCompareExchange64((volatile signed __int64 *)v9 + 159, (signed __int64)PoolWithTag, 0i64) )
{
v6 = -1073741811;
ExFreePoolWithTag(PoolWithTag, 0);
}
}
else
{
v6 = -1073741670;
}
EtwpReleaseLoggerContext((unsigned int *)v9, 0);
}
else
{
v6 = -1073741162;
}
KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
return v6;
}Referenced by:
No references.