Reactos
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 */