ObpPushStackInfo
VOID __fastcall ObpPushStackInfo(INT64 a1, CHAR a2, INT64 a3, INT64 a4){
unsigned int v4;
unsigned int v7;
__int64 v8;
signed __int32 v9;
UINT64 v10;
int v11;
INT64 v12;
void *BackTrace[16];
v4 = a3;
v7 = a4;
memset((INT64)BackTrace, 0i64);
if( *((char *)&PerfGlobalGroupMask + 16) < 0 )
EtwTraceObjectOperation(4403 - (a2 != 0), a1, v4, v7);
if( (ObpTraceFlags & 0x73) != 0 && (*(_BYTE *)(a1 + 25) & 1) != 0 && ObGetCurrentIrql() <= 2u )
{
v8 = RtlCaptureStackBackTrace(1ui64, 0x10ui64, BackTrace, 0i64);
if( (_WORD)v8 )
{
if( (unsigned int)v8 < 0x10 )
memset((INT64)&BackTrace[v8], 0i64);
v9 = _InterlockedExchangeAdd(&ObpStackSequence, 1u);
MmCanThreadFault();
LODWORD(v12) = v7;
v10 = (unsigned int)(v9 + 1);
if( v11 )
ObpPushRefDerefInfo(a1, a2, v4, v10, (UINT16 *)BackTrace, v12);
else
ObpDeferPushRefDerefInfo(a1, a2, v4, v10, (struct SLIST_ENTRY *)BackTrace, v12);
}
}
}Referenced by:
CmpCreateKeyBody
ExAllocatePoolWithQuotaTag
ExpApplyPriorityBoost
ExpSetResourceOwnerPointerEx
IoGetAttachedDeviceReference
IopAllocRealFileObject
IopCallDriverReference
IopQueueIrpToFileObject
IopVerifierExAllocatePoolWithQuota_1
NtCancelTimer
ObCreateObjectEx
ObDereferenceObjectDeferDelete
ObDereferenceObjectDeferDeleteWithTag
ObReferenceFileObjectForWrite
ObReferenceObjectByPointer
ObReferenceObjectByPointerWithTag
ObReferenceObjectExWithTag
ObReferenceObjectSafe
ObReferenceObjectSafeWithTag
ObWaitForMultipleObjects
ObfDereferenceObjectWithTag
ObfReferenceObject
ObfReferenceObjectWithTag
ObpReferenceObjectByHandleWithTag
ObpReferenceProcessObjectByHandle
ObpTraceObjectDereferenceIfActive
PsGetThreadProperty
PsImpersonateContainerOfThread
PspReferenceCidTableEntry