PspJobIoRateControlDisable

NTSTATUS __fastcall PspJobIoRateControlDisable(_EJOB *Job){
  NTSTATUS v1; 
  _PS_IO_CONTROL_ENTRY *Flink; 
  _LIST_ENTRY *v5; 
  _LIST_ENTRY ListHead; 

  v1 = 0;
  if( *((_QWORD *)Job + 180) )
  {
    PspIoRateEntryDeactivate((_PS_IO_CONTROL_ENTRY *)Job + 25);
    v1 = 1;
  }
  ListHead.Blink = &ListHead;
  ListHead.Flink = &ListHead;
  PspJobIoRateVolumeEntryRemoveAll(Job, &ListHead);
  while( 1 )
  {
    Flink = (_PS_IO_CONTROL_ENTRY *)ListHead.Flink;
    if( ListHead.Flink == &ListHead )
      break;
    if( ListHead.Flink->Blink != &ListHead
      || (v5 = ListHead.Flink->Flink, ListHead.Flink->Flink->Blink != ListHead.Flink) )
    {
      __fastfail(3u);
    }
    ListHead.Flink = ListHead.Flink->Flink;
    v5->Blink = &ListHead;
    PspIoRateEntryDeactivate(Flink);
    ExFreePoolWithTag(Flink, 0);
    ++v1;
  }
  return v1;
}

Referenced by:

PspJobDelete
PspSetJobIoRateControl