ObpPushStackInfo
VOID __stdcall ObpPushStackInfo(_OBJECT_HEADER *ObjectHeader, UINT8 IsRef, UINT64 NumTraces, UINT64 Tag){
unsigned int v4;
unsigned int v7;
__int64 v8;
signed __int32 v9;
UINT64 v10;
int v11;
UINT64 Taga;
_OBJECT_REF_TRACE BackTrace;
v4 = NumTraces;
v7 = Tag;
memset(&BackTrace, 0i64, sizeof(BackTrace));
if( (xmmword_140CFB490 & 0x80u) != 0i64 )
EtwTraceObjectOperation(4403 - (IsRef != 0), ObjectHeader, v4, v7);
if( (ObpTraceFlags & 0x73) != 0 && (ObjectHeader->TraceFlags & 1) != 0 && ObGetCurrentIrql() <= 2u )
{
v8 = RtlCaptureStackBackTrace(1ui64, 0x10ui64, BackTrace.StackTrace, 0i64);
if( (_WORD)v8 )
{
if( (unsigned int)v8 < 0x10 )
memset(&BackTrace.StackTrace[v8], 0i64, 8 * (16 - v8));
v9 = _InterlockedExchangeAdd(&dword_140C25A10, 1u);
MmCanThreadFault();
LODWORD(Taga) = v7;
v10 = (unsigned int)(v9 + 1);
if( v11 )
ObpPushRefDerefInfo(ObjectHeader, IsRef, v4, v10, &BackTrace, Taga);
else
ObpDeferPushRefDerefInfo(ObjectHeader, IsRef, v4, v10, &BackTrace, Taga);
}
}
}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