ACCESS_MASK

The ACCESS_MASK structure is one doubleword value containing standard, specific, and generic rights. These rights are used in access-control entries (ACEs) and are the primary means of specifying the requested or granted access to an object.

typedef DWORD ACCESS_MASK;

The bits in this value are allocated as follows:

Bits Meaning
0 through 15 Specific rights. Contains the access mask specific to the object type associated with the mask.
16 through 23 Standard rights. Contains the object's standard access rights and can be a combination of the following predefined flags:

  Bit Flag Meaning
  16 DELETE Delete access
  17 READ_CONTROL Read access to the owner, group, and discretionary access-control list (ACL) of the security descriptor
  18 WRITE_DAC Write access to the discretionary access-control list (ACL)
  19 WRITE_OWNER Write access to owner
  20 SYNCHRONIZE Windows NT: Synchronize access

Bits Meaning
24 Access system security (ACCESS_SYSTEM_SECURITY). This flag is not a typical access type. It is used to indicate access to a system ACL. This type of access requires the calling process to have a specific privilege.
25 Maximum allowed (MAXIMUM_ALLOWED)
26 through 27 Reserved
28 Generic all (GENERIC_ALL)
29 Generic execute (GENERIC_EXECUTE)
30 Generic write (GENERIC_WRITE)
31 Generic read (GENERIC_READ)

The following constants represent the specific and standard access rights:

#define SPECIFIC_RIGHTS_ALL 0x0000FFFF

#define STANDARD_RIGHTS_REQUIRED 0x000F0000

#define STANDARD_RIGHTS_ALL 0x001F0000

See Also

GENERIC_MAPPING