ExGetNextProcess

_EPROCESS *__stdcall ExGetNextProcess(VOID *Process, UINT8 DoAccessCheck){
  _EPROCESS *result; 
  _KPROCESSOR_MODE AccessMode; 
  VOID *Handle; 

  Handle = 0i64;
  while( 1 )
  {
    result = (_EPROCESS *)PsGetNextProcess((_EPROCESS *)Process);
    Process = result;
    if( !result )
      break;
    if( (result->Flags & 0x4000000) != 0 )
    {
      if( !DoAccessCheck )
        return(_EPROCESS *)Process;
      LOBYTE(AccessMode) = 1;
      if( ObOpenObjectByPointer(result, 0x200ui64, 0i64, 1024, (POBJECT_TYPE)PsProcessType, AccessMode, &Handle) >= 0 )
      {
        ObCloseHandle(Handle, 0);
        return(_EPROCESS *)Process;
      }
    }
  }
  return result;
}

Referenced by:

PfpPrivSourceEnum