KiAbDetermineMaxWaiterPriority
VOID __stdcall KiAbDetermineMaxWaiterPriority(_KLOCK_ENTRY *HeadEntry, _AB_PRIORITY *MaxPriority){
__int16 bf_2;
_RTL_BALANCED_NODE *Min;
char v4;
bf_2 = HeadEntry->BoostBitmap._bf_2;
MaxPriority->AllPriorities = 0;
if( (bf_2 & 0x1FE) != 0 )
MaxPriority->IoPriority = 2;
if( (bf_2 & 0xFE00) != 0 )
MaxPriority->IoQoSPriority = 1;
Min = HeadEntry->WaiterTree.Min;
if( Min )
MaxPriority->CpuPriority = (char)Min[2].Children[0];
if( (HeadEntry->ThreadLocalFlags & 1) != 0 )
{
v4 = BYTE3((&HeadEntry[2].FreeListEntry.Next)[-2 * HeadEntry->EntryOffset]);
if( v4 > 15 )
v4 = 15;
if( v4 > MaxPriority->CpuPriority )
MaxPriority->CpuPriority = v4;
}
}Referenced by:
KiAbProcessContextSwitch
KiAbProcessThreadLocks