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