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