PspProcessOpen

INT64 __stdcall PspProcessOpen(
        _OB_OPEN_REASON OpenReason,
        CHAR AccessMode,
        _EPROCESS *TargetProcess,
        PVOID Object,
        UINT64 *GrantedAccess,
        UINT64 HandleCount){
  bool IsParentProcess; 
  __int64 v10; 
  unsigned int v11; 
  unsigned int v12; 
  int v13; 
  IsParentProcess = PspIsParentProcess((INT64)TargetProcess, (INT64)Object);
  v12 = v11 & 0xFFFFFFFE;
  if( !IsParentProcess )
    v12 = v11;
  if( (v12 & *(_DWORD *)GrantedAccess) != 0
    && PsTestProtectedProcessIncompatibility((unsigned __int8)AccessMode, (__int64)TargetProcess, v10) )
  {
    return 3221225506i64;
  }
  if( *((_QWORD *)Object + 280)
    && !*((_QWORD *)TargetProcess + 280)
    && AccessMode
    && (~DWORD2(xmmword_140C1DE80) & *(_DWORD *)GrantedAccess) != 0 )
  {
    return 3221225506i64;
  }
  v13 = *(_DWORD *)GrantedAccess;
  if( (*(_DWORD *)GrantedAccess & 1) != 0 && AccessMode == 1 && (*((_DWORD *)Object + 543) & 0x8000000) != 0 )
    return 3221225506i64;
  if( (*(_DWORD *)GrantedAccess & 0x28) == 40 || (*(_DWORD *)GrantedAccess & 0x400) != 0 )
  {
    v13 |= 0x1000u;
    *(_DWORD *)GrantedAccess = v13;
  }
  if( (v13 & 0x200) != 0 )
    *(_DWORD *)GrantedAccess = v13 | 0x2000;
  return 0i64;
}

Referenced by:

No references.