KiCheckForEffectivePriorityChange
VOID __fastcall KiCheckForEffectivePriorityChange(struct KPRCB *a1, INT64 a2){
__int64 v2;
__int64 v4;
char v5;
char v6;
INT64 v7;
v2 = *((_QWORD *)a1 + 2);
if( !v2 )
v2 = *((_QWORD *)a1 + 1);
v4 = *(_QWORD *)(v2 + 104);
if( v4 )
{
for( v4 += *((unsigned int *)a1 + 54); v4; v4 = *(_QWORD *)(v4 + 408) )
{
if( v4 == a2 )
goto LABEL_9;
}
}
if( v4 == a2 )
{
LABEL_9:
if( (*(_BYTE *)(v2 + 2) & 4) == 0 || (KiIsThreadRankNonZero((_ETHREAD *)v2, (_KPRCB *)a1), v5 = 1, !v6) )
v5 = *(_BYTE *)(v2 + 195);
**((_BYTE **)a1 + 7) = v5;
if( *((_QWORD *)a1 + 4247) )
{
v7 = (unsigned int)KiVpThreadSystemWorkPriority;
if( v2 != *((_QWORD *)a1 + 3) )
v7 = (unsigned int)v5;
KiSetSchedulerAssistPriority(*((volatile INT32 **)a1 + 4247), v7, 0);
}
}
}Referenced by:
KeSetSchedulingGroupRankBias
KiComputeGroupSchedulingRank
KiUpdateCpuTargetByRate
KiUpdateCpuTargetByWeight