BuildSecurityDescriptor
[New
- Windows NT]
The BuildSecurityDescriptor
function allocates and initializes a new security descriptor. A security
descriptor is an opaque structure that contains the security information
associated with an object. The function can initialize the new security
descriptor by merging specified security information with the information in an
existing security descriptor. If you don t specify an existing security
descriptor, the function initializes a new security descriptor based on the
specified security information.
BuildSecurityDescriptor creates a self-relative security descriptor, which
means that the security descriptor stores a SECURITY_DESCRIPTOR
DWORD BuildSecurityDescriptor(
PTRUSTEE pOwner, |
// identifies owner for new security descriptor |
PTRUSTEE pGroup, |
// identifies group for new security descriptor |
ULONG cCountOfAccessEntries, |
// number of access-control entries in the list |
PEXPLICIT_ACCESS pListOfAccessEntries, |
// pointer to list of access-control entries for
DACL |
ULONG cCountOfAuditEntries, |
// number of audit-control entries in the list |
PEXPLICIT_ACCESS pListOfAuditEntries, |
// pointer to list of audit-control entries for SACL |
PSECURITY_DESCRIPTOR pOldSD, |
// pointer to an existing security descriptor |
PULONG pSizeNewSD, |
// pointer to the size of the new security
descriptor |
PSECURITY_DESCRIPTOR * pNewSD |
// pointer that receives the new security descriptor |
); |
|
Parameters
pOwner
Pointer to a TRUSTEE
If this
parameter is NULL, the function uses the owner SID from the original security
descriptor pointed to by pOldSD. If pOldSD is NULL, or if the
owner SID in pOldSD is NULL, the owner SID is NULL in the new security
descriptor.
pGroup
Pointer to a TRUSTEE
structure that identifies the primary group SID for the new security
descriptor. If the structure uses the TRUSTEE_IS_NAME form, BuildSecurityDescriptor
looks up the SID associated with the specified trustee name.
If this
parameter is NULL, the function uses the group SID from the original security descriptor
pointed to by pOldSD. If pOldSD is NULL, or if the group SID in pOldSD
is NULL, the group SID is NULL in the new security descriptor.
cCountOfAccessEntries
Specifies the
number of EXPLICIT_ACCESS
pListOfAccessEntries
Pointer to an
array of EXPLICIT_ACCESS structures that describe access control
information for the DACL of the new security descriptor. The function creates
the new DACL by merging the information in the array with the DACL in pOldSD,
if any. If pOldSD is NULL, or if the DACL in pOldSD is NULL, the
function creates a new DACL based solely on the information in the array. For a
description of the rules for creating an ACLLM6.T4 from an array of EXPLICIT_ACCESS
structures, see the SetEntriesInAcl function.
If pListOfAccessEntries
is NULL, the new security descriptor gets the DACL from pOldSD. In this
case, if pOldSD is NULL, or if the DACL in pOldSD is NULL, the
new DACL is NULL.
cCountOfAuditEntries
Specifies the
number of EXPLICIT_ACCESS
pListOfAuditEntries
Pointer to an
array of EXPLICIT_ACCESS structures that describe audit control
information for the SACL of the new security descriptor. The function creates
the new SACL by merging the information in the array with the SACL in pOldSD,
if any. If pOldSD is NULL, or the SACL in pOldSD is NULL, the
function creates a new SACL based solely on the information in the array.
If pListOfAuditEntries
is NULL, the new security descriptor gets the SACL from pOldSD. In this
case, if pOldSD is NULL, or the SACL in pOldSD is NULL, the new
SACL is NULL.
pOldSD
Pointer to an
existing self-relative SECURITY_DESCRIPTOR
pSizeNewSD
Pointer to a ULONG
variable that receives the size, in bytes, of the returned security descriptor.
pNewSD
Pointer to a
variable that receives a pointer to the new security descriptor. The function
allocates memory for the new security descriptor. You must call the LocalFree
Return Values
If the
function succeeds, the return value is ERROR_SUCCESS.
If the
function fails, the return value is a nonzero error code defined in WINERROR.H.
Remarks
The BuildSecurityDescriptor
function is intended for trusted servers that implement or expose security on
their own objects. The function uses self-relative security descriptors
suitable for serializing into a stream and storing to disk, as a trusted server
might require.
See Also