The MakeAbsoluteSD function creates a security descriptor in absolute format by using a security descriptor in self-relative format as a template.
BOOL MakeAbsoluteSD(
PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
// address of self-relative SD
PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
// address of absolute SD
LPDWORD lpdwAbsoluteSecurityDescriptorSize,
// address of size of absolute SD
PACL pDacl, // address of discretionary ACL
LPDWORD lpdwDaclSize, // address of size of discretionary ACL
PACL pSacl, // address of system ACL
LPDWORD lpdwSaclSize, // address of size of system ACL
PSID pOwner, // address of owner SID
LPDWORD lpdwOwnerSize, // address of size of owner SID
PSID pPrimaryGroup, // address of primary-group SID
LPDWORD lpdwPrimaryGroupSize // address of size of group SID
);
If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
A security descriptor in absolute format contains pointers to the information it contains, rather than the information itself. A security descriptor in self-relative format contains the information in a contiguous block of memory. In a self-relative security descriptor, a SECURITY_DESCRIPTOR structure always starts the information, but the security descriptor's other components can follow the structure in any order. Instead of using memory addresses, the components of the self-relative security descriptor are identified by offsets from the beginning of the security descriptor. This format is useful when an security descriptor must be stored on a floppy disk or transmitted by means of a communications protocol.
A server that copies secured objects to various media can use the MakeAbsoluteSD function to create an absolute security descriptor from a self-relative security descriptor and the MakeSelfRelativeSD function to create a self-relative security descriptor from an absolute security descriptor.
Windows NT: Requires version 3.1 or later.
Windows: Unsupported.
Windows CE: Unsupported.
Header: Declared in winbase.h.
Import Library: Use advapi32.lib.
Low-Level Access-Control Overview, Low-Level Access Control Functions, ACL, MakeSelfRelativeSD, SECURITY_DESCRIPTOR