KiAbCrossThreadRelease
UINT8 __stdcall KiAbCrossThreadRelease(VOID *Lock, _KLOCK_ENTRY *Entry, _ETHREAD *Thread){
_KLOCK_ENTRY_BOOST_BITMAP v6;
UINT8 result;
UINT64 a3;
KiAbEntryRemoveFromTree(Entry);
v6.AllFields = (unsigned int)Entry->BoostBitmap;
Entry->AcquiredByte &= ~1u;
LODWORD(a3) = v6.AllFields & 0x1FFFF;
Entry->BoostBitmap.AllFields = v6.AllFields & 0xFFFE0000;
KiAbThreadRemoveBoosts(&Thread->Tcb, Lock, &a3);
Entry->LockState.$E8276A2CF8B819ED32D1B6FEB35D730A::_bf_0 = 0i64;
result = 1 << (Entry - Thread->Tcb.LockEntries);
_InterlockedOr8((volatile signed __int8 *)&Thread->Tcb.AbOrphanedEntrySummary, result);
return result;
}Referenced by:
KeAbCrossThreadDelete
KeAbCrossThreadRelease