Low-level Security Descriptor Creation

Low-level access control provides a set of functions for creating a security descriptor and getting and setting the components of a security descriptor. The low-level functions for initializing and setting the components of a security descriptor work only with absolute-format security descriptors. The low-level functions for getting the components of a security descriptor work with both absolute and self-relative security descriptors.

The InitializeSecurityDescriptor function initializes a SECURITY_DESCRIPTOR buffer. The initialized security descriptor is in absolute format and has no owner, primary group, discretionary access control list (DACL), or system access control list (SACL). You can use the following low-level functions to get or set specific components of a specified security descriptor.

Function Description
GetSecurityDescriptorControl Retrieves revision and control information from a security descriptor.
GetSecurityDescriptorDacl Retrieves the DACL from a security descriptor.
GetSecurityDescriptorGroup Retrieves the primary group security identifier (SID) from a security descriptor.
GetSecurityDescriptorLength Returns the length of a security descriptor.
GetSecurityDescriptorOwner Retrieves the owner SID from a security descriptor.
GetSecurityDescriptorSacl Retrieves the SACL from a security descriptor.
SetSecurityDescriptorDacl Puts a DACL into a security descriptor, superseding any existing DACL.
SetSecurityDescriptorGroup Sets the primary group SID of a security descriptor.
SetSecurityDescriptorOwner Sets the owner SID of a security descriptor.
SetSecurityDescriptorSacl Puts a SACL into a security descriptor, superseding any existing SACL.

 

To check the revision level and structural integrity of a security descriptor, call the IsValidSecurityDescriptor function.