Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ AddQualifiedAce()

void System.Security.AccessControl.CommonAcl.AddQualifiedAce ( SecurityIdentifier sid,
AceQualifier qualifier,
int accessMask,
AceFlags flags,
ObjectAceFlags objectFlags,
Guid objectType,
Guid inheritedObjectType )
inlinepackageinherited

Definition at line 822 of file CommonAcl.cs.

823 {
824 if (sid == null)
825 {
826 throw new ArgumentNullException("sid");
827 }
829 bool flag = false;
830 if (qualifier == AceQualifier.SystemAudit && (flags & AceFlags.AuditFlags) == 0)
831 {
833 }
834 if (accessMask == 0)
835 {
836 throw new ArgumentException(System.SR.Argument_ArgumentZero, "accessMask");
837 }
838 GenericAce ace = ((IsDS && objectFlags != 0) ? ((QualifiedAce)new ObjectAce(flags, qualifier, accessMask, sid, objectFlags, objectType, inheritedObjectType, isCallback: false, null)) : ((QualifiedAce)new CommonAce(flags, qualifier, accessMask, sid, isCallback: false, null)));
839 if (!InspectAce(ref ace, this is DiscretionaryAcl))
840 {
841 return;
842 }
843 for (int i = 0; i < Count; i++)
844 {
845 QualifiedAce ace2 = _acl[i] as QualifiedAce;
846 if (!(ace2 == null) && MergeAces(ref ace2, (QualifiedAce)ace))
847 {
848 flag = true;
849 break;
850 }
851 }
852 if (!flag)
853 {
854 _acl.InsertAce(_acl.Count, ace);
855 _isDirty = true;
856 }
858 }
static string Arg_EnumAtLeastOneFlag
Definition SR.cs:44
static string Argument_ArgumentZero
Definition SR.cs:52
Definition SR.cs:7
bool MergeAces(ref QualifiedAce ace, QualifiedAce newAce)
Definition CommonAcl.cs:606
bool InspectAce(ref GenericAce ace, bool isDacl)
Definition CommonAcl.cs:359
void InsertAce(int index, GenericAce ace)
Definition RawAcl.cs:172

References System.Security.AccessControl.CommonAcl._acl, System.Security.AccessControl.CommonAcl._isDirty, System.SR.Arg_EnumAtLeastOneFlag, System.SR.Argument_ArgumentZero, System.Security.AccessControl.CommonAcl.Count, System.Security.AccessControl.RawAcl.Count, System.Security.AccessControl.RawAcl.InsertAce(), System.Security.AccessControl.CommonAcl.InspectAce(), System.Security.AccessControl.CommonAcl.IsDS, System.Security.AccessControl.CommonAcl.MergeAces(), System.Security.AccessControl.CommonAcl.OnAclModificationTried(), and System.Security.AccessControl.CommonAcl.ThrowIfNotCanonical().

Referenced by System.Security.AccessControl.DiscretionaryAcl.AddAccess(), System.Security.AccessControl.DiscretionaryAcl.AddAccess(), System.Security.AccessControl.SystemAcl.AddAudit(), and System.Security.AccessControl.SystemAcl.AddAudit().