-/* $Id: rtl.h,v 1.45 2004/07/08 22:05:48 gvg Exp $
+/* $Id: rtl.h,v 1.46 2004/07/15 08:15:49 ekohl Exp $
*
*/
IN ACCESS_MASK AccessMask,
IN PSID Sid);
+NTSTATUS STDCALL
+RtlAddAuditAccessAceEx(IN OUT PACL Acl,
+ IN ULONG Revision,
+ IN ULONG Flags,
+ IN ACCESS_MASK AccessMask,
+ IN PSID Sid,
+ IN BOOLEAN Success,
+ IN BOOLEAN Failure);
+
VOID STDCALL
RtlDeleteCriticalSection (PCRITICAL_SECTION CriticalSection);
-; $Id: ntdll.def,v 1.124 2004/07/08 00:40:30 weiden Exp $
+; $Id: ntdll.def,v 1.125 2004/07/15 08:15:20 ekohl Exp $
;
; ReactOS Operating System
;
RtlAddAtomToAtomTable@12
;RtlAddAttributeActionToRXact
RtlAddAuditAccessAce@24
+RtlAddAuditAccessAceEx@28
;RtlAddCompoundAce
RtlAddRange@36
RtlAdjustPrivilege@16
-; $Id: ntdll.edf,v 1.114 2004/07/08 00:40:30 weiden Exp $
+; $Id: ntdll.edf,v 1.115 2004/07/15 08:15:21 ekohl Exp $
;
; ReactOS Operating System
;
RtlAddAtomToAtomTable=RtlAddAtomToAtomTable@12
;RtlAddAttributeActionToRXact
RtlAddAuditAccessAce=RtlAddAuditAccessAce@24
+RtlAddAuditAccessAceEx=RtlAddAuditAccessAceEx@28
;RtlAddCompoundAce
RtlAddRange=RtlAddRange@36
RtlAdjustPrivilege=RtlAdjustPrivilege@16
}
+/*
+ * @implemented
+ */
+NTSTATUS STDCALL
+RtlAddAuditAccessAceEx(PACL Acl,
+ ULONG Revision,
+ ULONG Flags,
+ ACCESS_MASK AccessMask,
+ PSID Sid,
+ BOOLEAN Success,
+ BOOLEAN Failure)
+{
+ PACE Ace;
+
+ if (Success != FALSE)
+ {
+ Flags |= SUCCESSFUL_ACCESS_ACE_FLAG;
+ }
+
+ if (Failure != FALSE)
+ {
+ Flags |= FAILED_ACCESS_ACE_FLAG;
+ }
+
+ if (!RtlValidSid(Sid))
+ {
+ return STATUS_INVALID_SID;
+ }
+
+ if (Acl->AclRevision > MAX_ACL_REVISION ||
+ Revision > MAX_ACL_REVISION)
+ {
+ return STATUS_REVISION_MISMATCH;
+ }
+
+ if (Revision < Acl->AclRevision)
+ {
+ Revision = Acl->AclRevision;
+ }
+
+ if (!RtlFirstFreeAce(Acl, &Ace))
+ {
+ return STATUS_INVALID_ACL;
+ }
+
+ if (Ace == NULL)
+ {
+ return STATUS_ALLOTTED_SPACE_EXCEEDED;
+ }
+
+ if (((PVOID)Ace + RtlLengthSid(Sid) + sizeof(ACE)) >= ((PVOID)Acl + Acl->AclSize))
+ {
+ return STATUS_ALLOTTED_SPACE_EXCEEDED;
+ }
+
+ Ace->Header.AceFlags = Flags;
+ Ace->Header.AceType = SYSTEM_AUDIT_ACE_TYPE;
+ Ace->Header.AceSize = RtlLengthSid(Sid) + sizeof(ACE);
+ Ace->AccessMask = AccessMask;
+ RtlCopySid(RtlLengthSid(Sid),
+ (PSID)(Ace + 1),
+ Sid);
+ Acl->AceCount++;
+ Acl->AclRevision = Revision;
+
+ return STATUS_SUCCESS;
+}
+
+
static VOID
RtlpDeleteData(PVOID Ace,
ULONG AceSize,