ExAcquireRundownProtectionCacheAwareEx
INT8 __fastcall ExAcquireRundownProtectionCacheAwareEx(INT64 a1, INT64 a2){
signed __int64 *v2;
signed __int64 v3;
signed __int64 v4;
v2 = (signed __int64 *)(*(_QWORD *)a1 + *(_DWORD *)(a1 + 16) * (KeGetPcr()->Prcb.Number % *(_DWORD *)(a1 + 20)));
_m_prefetchw(v2);
v3 = *v2;
if( (*v2 & 1) != 0 )
return 0;
while( 1 )
{
v4 = v3;
v3 = _InterlockedCompareExchange64(v2, (unsigned int)(2 * a2) + v3, v3);
if( v4 == v3 )
break;
if( (v3 & 1) != 0 )
return 0;
}
return 1;
}Referenced by:
EtwInitialize
EtwpAcquireLoggerContextByLoggerId
EtwpCompressionDpc
EtwpEventWriteFull
EtwpFailLogging
EtwpLogKernelEvent
EtwpOpenLogger
EtwpQueueStackWalkApc
EtwpQueueStackWalkDpc
EtwpStartLogger
EtwpStopTrace
EtwpWriteUserEvent
PeriodicCaptureStateTimerCallback
RawBeginOperation