KeAbPostReleaseEx
VOID __stdcall KeAbPostReleaseEx(VOID *Lock, VOID *LockHandle){
_KLOCK_ENTRY *v2;
_ETHREAD *CurrentThread;
unsigned __int8 v5;
__int64 v6;
UINT64 a3;
LODWORD(a3) = 0;
v2 = (_KLOCK_ENTRY *)LockHandle;
if( ((unsigned __int8)LockHandle & 1) != 0 )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v2 = &CurrentThread->Tcb.LockEntries[(unsigned __int8)((unsigned __int64)LockHandle >> 1)];
if( (VOID *)(v2->LockState.$E8276A2CF8B819ED32D1B6FEB35D730A::_bf_0 & 0x7FFFFFFFFFFFFFFCi64 | 0x8000000000000000ui64) != Lock )
KeBugCheckEx(0x162u, CurrentThread, Lock, v2, 0i64);
}
else
{
CurrentThread = (_ETHREAD *)((char *)LockHandle - 16 * *((unsigned __int8 *)LockHandle + 24));
}
--CurrentThread->Tcb.SpecialApcDisable;
v5 = ++CurrentThread->Tcb.AbAllocationRegionCount;
v2->AcquiredByte &= ~1u;
KeAbEntryFree(v2, (_KTHREAD *)LockHandle);
v6 = v2 - CurrentThread->Tcb.LockEntries;
if( v5 == 1 )
CurrentThread->Tcb.AbEntrySummary |= 1 << v6;
else
_InterlockedOr8((volatile signed __int8 *)&CurrentThread->Tcb.AbOrphanedEntrySummary, 1 << v6);
--CurrentThread->Tcb.AbAllocationRegionCount;
KiAbThreadRemoveBoosts(&CurrentThread->Tcb, Lock, &a3);
KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
}Referenced by:
AlpcpTryLockForCachedReferenceBlob
CmpCreateKeyControlBlock
CmpTryToLockHashEntryExclusive
CmpTryToLockKcbExclusive
CmpWaitOnHiveWriteQueue
ExAcquireFastResourceExclusive
ExAcquireFastResourceShared
ExAcquireFastResourceSharedStarveExclusive
ExDisownFastResource
ExTryAcquireAutoExpandPushLockExclusive
ExTryAcquireAutoExpandPushLockShared
ExTryAcquireCacheAwarePushLockExclusiveEx
ExTryAcquireCacheAwarePushLockSharedEx
ExTryAcquirePushLockExclusiveEx
ExTryAcquirePushLockSharedEx
ExTryToAcquireFastMutex
ExpReleaseFastResourceExclusive
ExpReleaseFastResourceShared
IopProcessIoTracking
IopWaitAndAcquireFileObjectLock
KeWaitForMultipleObjects
KeWaitForSingleObject
KiForceSymbolReferences
KiWaitForAllObjects
MiChangingSubsectionProtos
MiCoalesceFreePages
MiDeleteVad
MiLockAddressSpaceToo
MiLockControlAreaSectionExtend
MiProcessTransitionHeatBatch
MiReferenceControlArea
MiTryLockVad
MiWaitForCollidedFaultComplete
MiWaitForExtentDeletions
PfLockSharedTryAcquire
PfpPrefetchSharedConflictNotifyEnd
StLockTryAcquireExclusive
TlgAggregateInternalProviderCallback
TryLockShutdownShared
VrpWaitForDiffHiveEntryTransitionOwnerToLeave