FsRtlpDoBoost
VOID __stdcall FsRtlpDoBoost(
_ETHREAD *OwnerThread,
_ETHREAD *WaitingThread,
UINT8 *WaiterPriority,
UINT64 *Flags,
PVOID Context){
bool v5;
unsigned int v9;
unsigned int v10;
unsigned int v11;
unsigned __int8 v12;
v5 = 0;
if( (*((_DWORD *)OwnerThread + 324) & 0xE00u) < 0x400 )
v5 = (*(_BYTE *)Flags & 0x20) == 0;
v9 = *((unsigned __int8 *)WaitingThread + 195);
v10 = *WaiterPriority;
v11 = 15;
if( (unsigned __int8)v9 < 0xFu )
v11 = v9;
if( v10 <= v11 )
{
LOBYTE(v10) = 15;
if( (unsigned __int8)v9 < 0xFu )
LOBYTE(v10) = v9;
}
*WaiterPriority = v10;
v12 = *((_BYTE *)OwnerThread + 195);
if( v5 || (unsigned __int8)v10 > v12 )
{
if( (unsigned __int8)v10 > v12 )
KeSetPriorityBoost((_KTHREAD *)OwnerThread, (unsigned __int8)v10);
if( v5 )
{
PsBoostThreadIoEx((__int64)OwnerThread, 0, 1, Context);
*(_DWORD *)Flags |= 0x20u;
IoBoostThreadIoPriority((KSPIN_LOCK *)OwnerThread, (*((_DWORD *)WaitingThread + 324) >> 9) & 7, 0);
}
}
}Referenced by:
FsRtlpModifyThreadPriorities