The CreatePrivateObjectSecurity function allocates and initializes a self-relative security descriptor for a new protected server’s object. This function is called when a new protected server object is being created.
BOOL CreatePrivateObjectSecurity(
PSECURITY_DESCRIPTOR ParentDescriptor, |
// pointer to parent directory SD |
PSECURITY_DESCRIPTOR CreatorDescriptor, |
// pointer to creator SD |
PSECURITY_DESCRIPTOR *NewDescriptor, |
// pointer to pointer to new SD |
BOOL IsDirectoryObject, |
// container flag for new SD |
HANDLE Token, |
// handle to client’s access token |
PGENERIC_MAPPING GenericMapping |
// pointer to access-rights structure |
); |
A client token is used to retrieve default security information for the new
object, such as its default owner, primary group, and discretionary
access-control list. The token must be open for TOKEN_QUERY access.
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.
If a system access-control list, or SACL, is specified in the SECURITY_DESCRIPTOR specified by CreatorDescriptor, Token must have the SE_SECURITY_NAME privilege enabled, and the caller’s token must have the SE_AUDIT_NAME privilege enabled. The CreatePrivateObjectSecurity function performs access/privilege checks to ensure this, and may generate audits during the process.
DestroyPrivateObjectSecurity, GENERIC_MAPPING, GetPrivateObjectSecurity, GetTokenInformation, OpenProcessToken, SECURITY_DESCRIPTOR, SECURITY_IMPERSONATION_LEVEL, SetPrivateObjectSecurity