MakeAbsoluteSD

  BOOL MakeAbsoluteSD(pSelfRelativeSecurityDescriptor, pAbsoluteSecurityDescriptor, lpdwAbsoluteSecurityDescriptorSize, pDacl, lpdwDaclSize, pSacl, lpdwSaclSize, pOwner, lpdwOwnerSize, pPrimaryGroup, lpdwPrimaryGroupSize)    
  PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor;    
  PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor;    
  LPDWORD lpdwAbsoluteSecurityDescriptorSize;    
  PACL pDacl;    
  LPDWORD lpdwDaclSize;    
  PACL pSacl;    
  LPDWORD lpdwSaclSize;    
  PSID pOwner;    
  LPDWORD lpdwOwnerSize;    
  PSID pPrimaryGroup;    
  LPDWORD lpdwPrimaryGroupSize;    

The MakeAbsoluteSD function creates an absolute format version of a self-relative format security descriptor.

Parameters

pSelfRelativeSecurityDescriptor

Pointer to a self-relative format SECURITY_DESCRIPTOR data structure. The function will create an absolute format version of this security descriptor. The function will not modify this security descriptor.

pAbsoluteSecurityDescriptor

Pointer to a buffer that the function will fill with the main body of an absolute format security descriptor. This information will be formatted as a SECURITY_DESCRIPTOR data structure.

lpdwAbsoluteSecurityDescriptorSize

Pointer to a variable that specifies the size of the buffer pointed to by pAbsoluteSecurityDescriptor. If the buffer is not large enough, the function fails, and sets the variable to the minimum buffer size required.

pDacl

Pointer to a buffer that the function will fill with the discretionary access control list (ACL) of the absolute format security descriptor. The main body of the absolute format security descriptor will reference, not copy, this pointer.

The ACL data structure has the following form:

typedef struct _ACL { /* acl */

BYTE AclRevision;

BYTE Sbz1;

WORD AclSize;

WORD AceCount;

WORD Sbz2;

} ACL;

lpdwDaclSize

Pointer to a variable that specifies the size of the buffer pointed to by pDacl. If the buffer is not large enough, the function fails, and sets the variable to the minimum buffer size required.

pSacl

Pointer to a buffer that the function will fill with the system access control list (ACL) of the absolute format security descriptor. The main body of the absolute format security descriptor will reference, not copy, this pointer.

lpdwSaclSize

Pointer to a variable that specifies the size of the buffer pointed to by pSacl. If the buffer is not large enough, the function fails, and sets the variable to the minimum buffer size required.

pOwner

Pointer to a buffer that the function will fill with the security identifier (SID) of the owner of the absolute format security descriptor. The main body of the absolute format security descriptor will reference, not copy, this pointer.

lpdwOwnerSize

Pointer to a variable that specifies the size of the buffer pointed to by pOwner. If the buffer is not large enough, the function fails, and sets the variable to the minimum buffer size required.

pPrimaryGroup

Pointer to a buffer that the function will fill with the security identifier (SID) of the primary group of the absolute format security descriptor. The main body of the absolute format security descriptor will reference, not copy, this pointer.

lpdwPrimaryGroupSize

Pointer to a variable that specifies the size of the buffer pointed to by pPrimaryGroup. If the buffer is not large enough, the function fails, and sets the variable to the minimum buffer size required.

Return Value

The return value is TRUE if the function was successful, or FALSE if an error occurred. Use the GetLastError function to obtain extended error information.

See Also

MakeSelfRelativeSD