Reactos
at master 65 lines 1.7 kB view raw
1/* 2 * COPYRIGHT: See COPYING in the top level directory 3 * PROJECT: ReactOS system libraries 4 * FILE: lib/rtl/access.c 5 * PURPOSE: Access rights handling functions 6 * PROGRAMMERS: Eric Kohl 7 */ 8 9/* INCLUDES *****************************************************************/ 10 11#include <rtl.h> 12#define NDEBUG 13#include <debug.h> 14 15/* FUNCTIONS ***************************************************************/ 16 17/* 18 * @implemented 19 */ 20BOOLEAN 21NTAPI 22RtlAreAllAccessesGranted(IN ACCESS_MASK GrantedAccess, 23 IN ACCESS_MASK DesiredAccess) 24{ 25 PAGED_CODE_RTL(); 26 27 /* Return if there's no leftover bits after granting all of them */ 28 return !(~GrantedAccess & DesiredAccess); 29} 30 31/* 32 * @implemented 33 */ 34BOOLEAN 35NTAPI 36RtlAreAnyAccessesGranted(IN ACCESS_MASK GrantedAccess, 37 IN ACCESS_MASK DesiredAccess) 38{ 39 PAGED_CODE_RTL(); 40 41 /* Return if there's any leftover bits after granting all of them */ 42 return ((GrantedAccess & DesiredAccess) != 0); 43} 44 45/* 46 * @implemented 47 */ 48VOID 49NTAPI 50RtlMapGenericMask(IN OUT PACCESS_MASK AccessMask, 51 IN PGENERIC_MAPPING GenericMapping) 52{ 53 PAGED_CODE_RTL(); 54 55 /* Convert mappings */ 56 if (*AccessMask & GENERIC_READ) *AccessMask |= GenericMapping->GenericRead; 57 if (*AccessMask & GENERIC_WRITE) *AccessMask |= GenericMapping->GenericWrite; 58 if (*AccessMask & GENERIC_EXECUTE) *AccessMask |= GenericMapping->GenericExecute; 59 if (*AccessMask & GENERIC_ALL) *AccessMask |= GenericMapping->GenericAll; 60 61 /* Clear generic flags */ 62 *AccessMask &= ~(GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE | GENERIC_ALL); 63} 64 65/* EOF */