ObpGrantAccess
INT64 __fastcall ObpGrantAccess(
_OB_OPEN_REASON OpenReason,
VOID *Object,
_ACCESS_STATE *AccessState,
INT64 AccessMode,
UINT64 Attributes,
UINT *GrantedAccess){
unsigned __int64 v8;
KPROCESSOR_MODE v9;
unsigned __int64 v10;
INT64 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 = AccessMode;
if( (unsigned int)(OpenReason - 1) > 1 )
{
result = ObpAdjustCreatorAccessState(AccessState, v9, ObTypeIndexTable[v10], (__int64)Object);
if( (int)result >= 0 )
goto LABEL_5;
}
else
{
if( ObCheckObjectAccess(Object, AccessState, 1u, v9, &AccessStatus) )
{
LABEL_5:
*GrantedAccess = *((_DWORD *)AccessState + 5);
return 0i64;
}
return(unsigned int)AccessStatus;
}
return result;
}Referenced by:
ObpInsertOrLocateNamedObject