PspGetNextChildJob

_EJOB *__stdcall PspGetNextChildJob(_EJOB *ParentJob, _EJOB *ChildJob){
  _ETHREAD *CurrentThread; 
  _EJOB *v5; 
  _EJOB *v6; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v5 = 0i64;
  PspLockJobShared(ParentJob, CurrentThread);
  if( ChildJob )
    v6 = (_EJOB *)*((_QWORD *)ChildJob + 130);
  else
    v6 = (_EJOB *)*((_QWORD *)ParentJob + 132);
  while( v6 != (_EJOB *)((char *)ParentJob + 1056) )
  {
    if( ObReferenceObjectSafeWithTag((INT64)v6 - 1040, 1850045264i64) )
    {
      v5 = (_EJOB *)((char *)v6 - 1040);
      break;
    }
    v6 = *(_EJOB **)v6;
  }
  PspUnlockJob(ParentJob, CurrentThread);
  if( ChildJob )
    ObfDereferenceObjectWithTag(ChildJob, 0x6E457350ui64);
  return v5;
}

Referenced by:

PspEnumJobsAndProcessesInJobHierarchy