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