PspLockJobsAndProcessExclusive

VOID __stdcall PspLockJobsAndProcessExclusive(
        _PSP_JOB_LOCK_HIERARCHY *JobHierarchy,
        _EPROCESS *Process,
        _ETHREAD *CurrentThread){
  unsigned int i; 
  _EJOB *v5; 

  --CurrentThread->Tcb.SpecialApcDisable;
  if( Process )
    ExAcquirePushLockExclusiveEx(&Process->ProcessLock, 0i64);
  for( i = 0; i < *JobHierarchy; ++i )
  {
    v5 = *(_EJOB **)&JobHierarchy[4 * i + 2];
    if( LOBYTE(JobHierarchy[4 * i + 4]) )
      PspLockJobChain(v5, 0i64);
    else
      ExAcquireResourceExclusiveLite((UINT64)v5 + 56, 1, (INT64)CurrentThread);
  }
}

Referenced by:

PspAssignProcessToJob
PspJobDelete