IoApplyPriorityInfoThread

VOID __fastcall IoApplyPriorityInfoThread(
        _IO_PRIORITY_INFO *InputPriorityInfo,
        _IO_PRIORITY_INFO *OutputPriorityInfo,
        _ETHREAD *Thread){
  _IO_PRIORITY_HINT v6; 
  UINT64 PagePriority; 
  INT64 ThreadPriority; 
  _IO_PRIORITY_INFO v9; 

  if( InputPriorityInfo->ThreadPriority != 0xFFFF )
  {
    v6 = PsSetIoPriorityThread(Thread, InputPriorityInfo->IoPriority);
    PagePriority = InputPriorityInfo->PagePriority;
    v9.IoPriority = v6;
    if( (_DWORD)PagePriority == -1 )
      v9.PagePriority = -1;
    else
      v9.PagePriority = PsSetPagePriorityThread(Thread, PagePriority);
    ThreadPriority = InputPriorityInfo->ThreadPriority;
    if( (_DWORD)ThreadPriority == -1 )
    {
      v9.ThreadPriority = -1;
    }
    else
    {
      v9.ThreadPriority = Thread->Tcb.BasePriority;
      KeSetActualBasePriorityThread(&Thread->Tcb, ThreadPriority);
    }
    if( OutputPriorityInfo )
    {
      v9.Size = 16;
      *OutputPriorityInfo = v9;
    }
  }
}

Referenced by:

No references.