KeAbProcessBaseIoPriorityChangeInternal
VOID __stdcall KeAbProcessBaseIoPriorityChangeInternal(_ETHREAD *Thread, UINT64 PriorityIncreased){
unsigned __int8 CurrentIrql;
_KPRCB *CurrentPrcb;
_SINGLE_LIST_ENTRY *p_PropagateBoostsEntry;
_SINGLE_LIST_ENTRY *p_AbPropagateBoostsList;
int v6;
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
CurrentPrcb = KeGetCurrentPrcb();
if( !Thread->Tcb.AbOwnedEntryCount || (_DWORD)PriorityIncreased )
{
if( !Thread->Tcb.AbWaitEntryCount || !(_DWORD)PriorityIncreased )
goto LABEL_3;
p_PropagateBoostsEntry = &Thread->Tcb.PropagateBoostsEntry;
p_AbPropagateBoostsList = &CurrentPrcb->AbPropagateBoostsList;
}
else
{
p_PropagateBoostsEntry = &Thread->Tcb.IoSelfBoostsEntry;
p_AbPropagateBoostsList = &CurrentPrcb->AbSelfIoBoostsList;
}
KiAbThreadInsertList(Thread, p_AbPropagateBoostsList, p_PropagateBoostsEntry);
if( v6 )
KiAbQueueAutoBoostDpc(CurrentPrcb);
LABEL_3:
__writecr8(CurrentIrql);
}Referenced by:
IoUpdateThreadIoRateThrottle
KeAbProcessBaseIoPriorityChange