PspSendProcessNotificationToJobChain

VOID __stdcall PspSendProcessNotificationToJobChain(
        _EPROCESS *Process,
        UINT64 NotificationId,
        VOID *NotificationContext){
  _ETHREAD *CurrentThread; 
  _EJOB *i; 
  _EJOB *ExceptionList; 
  _EJOB *Job; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  Job = 0i64;
  ExceptionList = 0i64;
  PspLockRootJobFromProcess(Process, CurrentThread, &Job, &ExceptionList);
  for( i = Job; i; i = (_EJOB *)*((_QWORD *)i + 134) )
  {
    PspLockJobConditionally(i, &ExceptionList);
    if( *((_QWORD *)i + 57) && ((1 << NotificationId) & *((_DWORD *)i + 219)) != 0 )
      PspSendJobNotification(i, NotificationId, NotificationContext, 0);
    PspUnlockJobConditionally(i, &ExceptionList);
  }
  PspUnlockJob(ExceptionList, CurrentThread);
}

Referenced by:

PspRundownSingleProcess