PspCheckJobAccessState
__int64 __fastcall PspCheckJobAccessState(__int64 a1, _DWORD *a2){
unsigned int v2;
int v3;
_KPROCESSOR_MODE AccessMode;
PVOID SecurityDescriptor;
UINT8 MemoryAllocated;
int AccessStatus;
unsigned int GrantedAccess;
GrantedAccess = 0;
v2 = 0;
SecurityDescriptor = 0i64;
v3 = a2[280];
MemoryAllocated = 0;
AccessStatus = 0;
if( (v3 & 1) == 0 )
{
if( (*(_DWORD *)a1 & 1) != 0 )
return 0i64;
AccessStatus = ObpGetObjectSecurity(a2, &SecurityDescriptor, &MemoryAllocated, 0);
v2 = AccessStatus;
if( AccessStatus >= 0 )
{
LOBYTE(AccessMode) = 1;
SeAccessCheck(
SecurityDescriptor,
(PSECURITY_SUBJECT_CONTEXT)(a1 + 8),
0,
512,
0,
0i64,
(PGENERIC_MAPPING)((char *)PsProcessType + 76),
AccessMode,
&GrantedAccess,
&AccessStatus);
ObReleaseObjectSecurity(SecurityDescriptor, MemoryAllocated);
return(unsigned int)AccessStatus;
}
}
return v2;
}Referenced by:
PspSetAffinityLimitCallback
PspValidateJobAffinityState
PspValidateJobAssignmentProcessLimits