PspValidateJobAssignmentProcessLimits
NTSTATUS __stdcall PspValidateJobAssignmentProcessLimits(_EJOB *Job, _EPROCESS *a2, INT64 a3){
int v3;
int v6;
int v7;
NTSTATUS result;
__int64 v9;
v3 = a3;
if( (a2->Flags & 0x4000000) == 0
|| (v9 = *((_QWORD *)Job + 54)) == 0
|| (result = PspCheckJobAccessState(v9, a2), result >= 0) )
{
if( *((_DWORD *)Job + 306) == -1 )
return -1073741756;
v6 = *((_DWORD *)Job + 64);
if( (v6 & 8) != 0 && (unsigned int)(v3 + *((_DWORD *)Job + 54) - *((_DWORD *)Job + 307)) > *((_DWORD *)Job + 65) )
{
_InterlockedAnd((volatile signed __int32 *)&a2->1120, 0xFFFFFFDF);
if( *((_QWORD *)Job + 57) && (*((_DWORD *)Job + 219) & 8) != 0 )
PspSendJobNotification(Job, 3ui64, 0i64, 1u);
return -1073741756;
}
if( (v6 & 4) != 0 && *((_DWORD *)Job + 1) )
return -1073741756;
v7 = *((_DWORD *)Job + 330);
if( (v7 & 0x20000000) != 0 )
return -1073741811;
else
return(v7 & 0x80u) != 0 ? 0xC000010A : 0;
}
return result;
}Referenced by:
PspValidateJobChainLimits