ObReferenceObjectSafe
INT8 __fastcall ObReferenceObjectSafe(INT64 a1){
_OBJECT_HEADER *v1;
signed __int64 PointerCount;
signed __int64 v3;
v1 = (_OBJECT_HEADER *)(a1 - 48);
_m_prefetchw(v1);
PointerCount = v1->PointerCount;
if( !v1->PointerCount )
return 0;
while( 1 )
{
v3 = PointerCount;
PointerCount = _InterlockedCompareExchange64(&v1->PointerCount, PointerCount + 1, PointerCount);
if( v3 == PointerCount )
break;
if( !PointerCount )
return 0;
}
if( ObpTraceFlags )
ObpPushStackInfo(v1, 1u, 1ui64, 0x746C6644ui64);
return 1;
}Referenced by:
AlpcpCancelMessage
AlpcpDisconnectPort
AlpcpDispatchConnectionRequest
AlpcpDispatchNewMessage
AlpcpFlushMessagesPort
AlpcpPortQueryServerInfo
AlpcpProcessSynchronousRequest
AlpcpQueryRemoteView
AlpcpReceiveLegacyMessage
AlpcpReferenceAndLockTargetPortsAndCommunicationInfo
AlpcpReferenceConnectedPort
AlpcpReferenceMessageByWaitingThread
AlpcpReferenceReplyTargetPorts
CmUnRegisterCallback
HalpDmaFindAdapterByDeviceId
IovpBuildDriverObjectList
KiSwapToUmsThread
ObpCreateTypeArray
PspDisassociateUmsThreadFromPrimary
PspRundownUmsThreadForApcDelivery
WmipProcessEvent