KiAbThreadBoostIoPriority
VOID __fastcall KiAbThreadBoostIoPriority(
_ETHREAD *Thread,
_SINGLE_LIST_ENTRY *BoostList,
UINT64 IoQoSBoost,
UINT64 *BoostOutstandingIOsRequired){
int v6;
__int64 v8;
int v9[10];
v6 = IoQoSBoost;
if( (_DWORD)IoQoSBoost )
{
PsBoostThreadIoQoS((__int64)Thread, 0);
v8 = 864i64;
}
else
{
PsBoostThreadIoEx((__int64)Thread, 0, 0, 0i64);
v8 = 860i64;
}
_InterlockedOr(v9, 0);
if( *(_DWORD *)((char *)Thread + v8) )
goto LABEL_11;
if( !BoostList )
{
*(_DWORD *)BoostOutstandingIOsRequired |= (v6 != 0) + 1;
LABEL_11:
_InterlockedAdd((volatile signed __int32 *)((char *)Thread + v8), 1u);
return;
}
if( v6 )
PsBoostThreadIoQoS((__int64)Thread, 1);
else
PsBoostThreadIoEx((__int64)Thread, 1, 0, 0i64);
if( (unsigned int)KiAbThreadInsertList((_KTHREAD *)Thread, BoostList, (_SINGLE_LIST_ENTRY *)Thread + 102) )
KiAbQueueAutoBoostDpc((_KPRCB *)&BoostList[-4334]);
}Referenced by:
KiAbSetMinimumThreadPriority