ExAcquireRundownProtectionEx
INT8 __fastcall ExAcquireRundownProtectionEx(INT64 *a1, INT64 a2){
signed __int64 v2;
__int64 v3;
signed __int64 v4;
_m_prefetchw(a1);
v2 = *a1;
if( (*a1 & 1) != 0 )
return 0;
v3 = (unsigned int)(2 * a2);
while( 1 )
{
v4 = v2;
v2 = _InterlockedCompareExchange64(a1, v3 + v2, v2);
if( v4 == v2 )
break;
if( (v2 & 1) != 0 )
return 0;
}
return 1;
}Referenced by:
ExCompareExchangeCallBack
ExReferenceCallBackBlock
MiCompleteProtoPteFault
PfSnAddProcessTrace
PfSnReferenceProcessTrace
PspRundownProcess