PspProcessOpen

NTSTATUS __stdcall PspProcessOpen(
        _OB_OPEN_REASON OpenReason,
        INT8 AccessMode,
        _EPROCESS *TargetProcess,
        VOID *Object,
        UINT64 *GrantedAccess,
        UINT64 HandleCount){
  BOOL IsParentProcess; 
  _EPROCESS *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(AccessMode, TargetProcess, v10) )
    return -1073741790;
  if( *((_QWORD *)Object + 280)
    && !TargetProcess->PicoContext
    && AccessMode
    && (~DWORD2(xmmword_140C1DE80) & *(_DWORD *)GrantedAccess) != 0 )
  {
    return -1073741790;
  }
  v13 = *(_DWORD *)GrantedAccess;
  if( (*(_DWORD *)GrantedAccess & 1) != 0 && AccessMode == 1 && (*((_DWORD *)Object + 543) & 0x8000000) != 0 )
    return -1073741790;
  if( (*(_DWORD *)GrantedAccess & 0x28) == 40 || (*(_DWORD *)GrantedAccess & 0x400) != 0 )
  {
    v13 |= 0x1000u;
    *(_DWORD *)GrantedAccess = v13;
  }
  if( (v13 & 0x200) != 0 )
    *(_DWORD *)GrantedAccess = v13 | 0x2000;
  return 0;
}

Referenced by:

No references.