PspSendProcessNotificationToJobChain

void __fastcall PspSendProcessNotificationToJobChain(__int64 a1, __int64 a2, __int64 a3){
  _ETHREAD *CurrentThread; 
  _EJOB *i; 
  _EJOB *ExceptionList; 
  _EJOB *Job; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  Job = 0i64;
  ExceptionList = 0i64;
  PspLockRootJobFromProcess((_EPROCESS *)a1, CurrentThread, &Job, &ExceptionList);
  for( i = Job; i; i = i->ParentJob )
  {
    PspLockJobConditionally(i, &ExceptionList);
    if( i->CompletionPort && ((1 << a2) & i->CompletionFilter) != 0 )
      PspSendJobNotification(i, a2, (PVOID)a3, 0);
    PspUnlockJobConditionally(i, &ExceptionList);
  }
  PspUnlockJob((__int64)ExceptionList, (__int64)CurrentThread);
}

Referenced by:

PspRundownSingleProcess