Platform SDK: Access Control |
The AddAuditAccessObjectAce function adds a system-audit ACE to the end of a SACL. The new ACE can audit access to an object, or to a property set or property on an object. You can also use AddAuditAccessObjectAce to add an ACE that only a specified type of child object can inherit.
BOOL AddAuditAccessObjectAce( PACL pAcl, // ACL DWORD dwAceRevision, // ACL revision level DWORD AceFlags, // ACE inheritance flags DWORD AccessMask, // access mask for new ACE GUID *ObjectTypeGuid, // objects protected by ACE GUID *InheritedObjectTypeGuid, // objects inheriting ACE PSID pSid, // trustee SID for new ACE BOOL bAuditSuccess, // successful access BOOL bAuditFailure // unsuccessful access );
Value | Meaning |
---|---|
CONTAINER_INHERIT_ACE | The ACE is inherited by container objects. |
FAILED_ACCESS_ACE_FLAG | If you set this flag or specify TRUE for the bAuditFailure parameter, failed attempts to use the specified access rights cause the system to generate an audit record in the security event log. |
INHERIT_ONLY_ACE | The ACE does not apply to the object to which the ACL is assigned, but it can be inherited by child objects. |
INHERITED_ACE | Indicates an inherited ACE. This flag allows operations that change the security on a tree of objects to modify inherited ACEs, while not changing ACEs that were directly applied to the object. |
NO_PROPAGATE_INHERIT_ACE | The OBJECT_INHERIT_ACE and CONTAINER_INHERIT_ACE bits are not propagated to an inherited ACE. |
OBJECT_INHERIT_ACE | The ACE is inherited by noncontainer objects. |
SUCCESSFUL_ACCESS_ACE_FLAG | If you set this flag or specify TRUE for the bAuditSuccess parameter, successful uses of the specified access rights cause the system to generate an audit record in the security event log. |
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. The following are possible error values.
Error value | Description |
---|---|
ERROR_ALLOTTED_SPACE_EXCEEDED | The new ACE does not fit into the ACL. A larger ACL buffer is required. |
ERROR_INVALID_ACL | The specified ACL is not properly formed. |
ERROR_INVALID_FLAGS | The AceFlags parameter is invalid. |
ERROR_INVALID_SID | The specified SID is not structurally valid. |
ERROR_REVISION_MISMATCH | The specified revision is not known or is incompatible with that of the ACL. |
ERROR_SUCCESS | The ACE was successfully added. |
If both ObjectTypeGuid and InheritedObjectTypeGuid are NULL, use the AddAuditAccessAceEx function rather than AddAuditAccessObjectAce. This is suggested because a SYSTEM_AUDIT_ACE is smaller and more efficient than an SYSTEM_AUDIT_OBJECT_ACE.
Windows NT/2000: Requires Windows 2000.
Header: Declared in Winbase.h; include Windows.h.
Library: Use Advapi32.lib.
Low-Level Access-Control Overview, Low-Level Access Control Functions, ACE_HEADER, ACL, AddAccessAllowedObjectAce, AddAccessDeniedObjectAce, AddAuditAccessAceEx, SYSTEM_AUDIT_ACE, SYSTEM_AUDIT_OBJECT_ACE