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.