PspSetBackgroundJobTree

NTSTATUS __stdcall PspSetBackgroundJobTree(_EJOB *Job, UINT8 Background){
  struct _ERESOURCE *p_JobLock; 
  unsigned int v4; 
  __int64 v6; 
  LOBYTE(v6) = Background;
  p_JobLock = &Job->JobLock;
  ExAcquireResourceExclusiveLite(&Job->JobLock, 1u);
  v4 = Job->JobFlags & 0x400;
  if( (_BYTE)v6 )
  {
    if( !v4 )
      goto LABEL_3;
LABEL_11:
    ExReleaseResourceLite(p_JobLock);
    return -1073741811;
  }
  if( !v4 )
    goto LABEL_11;
LABEL_3:
  if( (_BYTE)v6 )
    _interlockedbittestandset((volatile signed __int32 *)&Job->1320, 0xAu);
  else
    _interlockedbittestandreset((volatile signed __int32 *)&Job->1320, 0xAu);
  PspEnumJobsAndProcessesInJobHierarchy(
    Job,
    (__int64(__fastcall *)(__int64, __int64))PspSetJobBackgroundCountCallback,
    0i64,
    (__int64(__fastcall *)(_QWORD *, __int64))PspSetProcessBackgroundCountCallback,
    (__int64)&v6,
    5);
  ExReleaseResourceLite(p_JobLock);
  if( !(_BYTE)v6 )
    PspEnumJobsAndProcessesInJobHierarchy(
      Job,
      0i64,
      (unsigned int(__fastcall *)(__int64, __int64))PspBoostJobIoPriorityCallback,
      0i64,
      0i64,
      0);
  return 0;
}

Referenced by:

NtSetInformationJobObject