ObpGrantAccess
NTSTATUS __stdcall ObpGrantAccess(
_OB_OPEN_REASON OpenReason,
VOID *Object,
_ACCESS_STATE *AccessState,
INT8 AccessMode,
UINT64 Attributes,
UINT64 *GrantedAccess){
unsigned __int64 v8;
_KPROCESSOR_MODE v9;
unsigned __int64 v10;
NTSTATUS result;
INT64 AccessStatus;
LODWORD(AccessStatus) = 0;
v8 = (unsigned __int8)*((char *)Object - 24) ^ (unsigned __int64)(unsigned __int8)((unsigned __int16)((_WORD)Object - 48) >> 8);
v9 = 1;
v10 = (unsigned __int8)ObHeaderCookie ^ v8;
if( (Attributes & 0x400) == 0 )
v9 = (unsigned __int8)AccessMode;
if( (unsigned int)(OpenReason - 1) > 1 )
{
result = ObpAdjustCreatorAccessState(AccessState, v9, (_OBJECT_TYPE *)ObTypeIndexTable[v10], Object);
if( result >= 0 )
goto LABEL_5;
}
else
{
if( ObCheckObjectAccess(Object, AccessState, 1u, v9, &AccessStatus) )
{
LABEL_5:
*(_DWORD *)GrantedAccess = *((_DWORD *)AccessState + 5);
return 0;
}
return AccessStatus;
}
return result;
}Referenced by:
ObpInsertOrLocateNamedObject