KeUpdateThreadSchedulingProperties
VOID __stdcall KeUpdateThreadSchedulingProperties(_ETHREAD *Thread, UINT8 ThreadState, _KPRCB *Prcb){
_KPRCB *v5;
char v6;
char Priority;
UINT8 IsThreadRankNonZero;
INT64 v9;
KiUpdateSharedReadyQueueAffinityThread(0i64, &Thread->Tcb);
if( v6 == 2 && !Prcb->NextThread || v6 == 3 )
{
if( (Thread->Tcb.gap0[2] & 4) == 0
|| (IsThreadRankNonZero = KiIsThreadRankNonZero(&Thread->Tcb, Prcb, v5), Priority = 1, !IsThreadRankNonZero) )
{
Priority = Thread->Tcb.Priority;
}
*Prcb->PriorityState = Priority;
if( Prcb->SchedulerAssist )
{
v9 = (unsigned int)KiVpThreadSystemWorkPriority;
if( Thread != Prcb->IdleThread )
v9 = (unsigned int)Priority;
KiSetSchedulerAssistPriority((INT32 *)Prcb->SchedulerAssist, v9, 0);
}
}
}Referenced by:
KiRemoveThreadFromSchedulingGroup
KiSetThreadSchedulingGroup