ObDereferenceObjectDeferDeleteWithTag
NTSTATUS __fastcall ObDereferenceObjectDeferDeleteWithTag(UINT64 a1, INT64 a2){
signed __int64 v3;
bool v4;
void *BugCheckParameter4;
if( ObpTraceFlags )
ObpPushStackInfo((_OBJECT_HEADER *)(a1 - 48), 0, 1ui64, (unsigned int)a2);
v3 = _InterlockedExchangeAdd64((volatile signed __int64 *)(a1 - 48), 0xFFFFFFFFFFFFFFFFui64);
v4 = v3 <= 1;
BugCheckParameter4 = (void *)(v3 - 1);
if( v4 )
{
if( *(_QWORD *)(a1 - 40) )
KeBugCheckEx(
0x18u,
(PVOID)ObTypeIndexTable[(unsigned __int8)ObHeaderCookie ^ *(unsigned __int8 *)(a1 - 24) ^ (unsigned __int64)(unsigned __int8)((unsigned __int16)(a1 - 48) >> 8)],
(PVOID)a1,
(PVOID)3,
*(PVOID *)(a1 - 40));
if( (__int64)BugCheckParameter4 < 0 )
KeBugCheckEx(0x18u, 0i64, (PVOID)a1, (PVOID)4, BugCheckParameter4);
ObpDeferObjectDeletion((_OBJECT_HEADER *)(a1 - 48));
}
return(int)BugCheckParameter4;
}Referenced by:
CcChangeBackingFileObject
CcDereferenceSharedCacheMapFileObject
CcInitializeCacheMapEx
ExDeleteResourceLite
ExFreeHeapPool
ExReinitializeResourceLite
ExReturnPoolQuota
FsRtlpClearOwner
IopBoostThreadCallback
IopCallDriverReference
KiAbProcessContextSwitch
KiAbProcessThreadLocks
KiMonitorCacheErrata
MmChangeSectionBackingFile
PspChargeProcessWakeCounter
PspRevertContainerImpersonation
VrpDestroyNamespaceNode
VrpFreeKeyContext