Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
PipeSecurity.cs
Go to the documentation of this file.
5
6namespace System.IO.Pipes;
7
9{
10 public override Type AccessRightType => typeof(PipeAccessRights);
11
12 public override Type AccessRuleType => typeof(PipeAccessRule);
13
14 public override Type AuditRuleType => typeof(PipeAuditRule);
15
16 public PipeSecurity()
17 : base(isContainer: false, ResourceType.KernelObject)
18 {
19 }
20
21 internal PipeSecurity(SafePipeHandle safeHandle, AccessControlSections includeSections)
22 : base(isContainer: false, ResourceType.KernelObject, safeHandle, includeSections)
23 {
24 }
25
26 public void AddAccessRule(PipeAccessRule rule)
27 {
28 if (rule == null)
29 {
30 throw new ArgumentNullException("rule");
31 }
33 }
34
35 public void SetAccessRule(PipeAccessRule rule)
36 {
37 if (rule == null)
38 {
39 throw new ArgumentNullException("rule");
40 }
42 }
43
45 {
46 if (rule == null)
47 {
48 throw new ArgumentNullException("rule");
49 }
51 }
52
54 {
55 if (rule == null)
56 {
57 throw new ArgumentNullException("rule");
58 }
59 AuthorizationRuleCollection accessRules = GetAccessRules(includeExplicit: true, includeInherited: true, rule.IdentityReference.GetType());
60 for (int i = 0; i < accessRules.Count; i++)
61 {
62 if (accessRules[i] is PipeAccessRule pipeAccessRule && pipeAccessRule.PipeAccessRights == rule.PipeAccessRights && pipeAccessRule.IdentityReference == rule.IdentityReference && pipeAccessRule.AccessControlType == rule.AccessControlType)
63 {
64 return RemoveAccessRule((AccessRule)rule);
65 }
66 }
67 if (rule.PipeAccessRights != PipeAccessRights.FullControl)
68 {
70 }
71 return RemoveAccessRule((AccessRule)rule);
72 }
73
75 {
76 if (rule == null)
77 {
78 throw new ArgumentNullException("rule");
79 }
80 AuthorizationRuleCollection accessRules = GetAccessRules(includeExplicit: true, includeInherited: true, rule.IdentityReference.GetType());
81 for (int i = 0; i < accessRules.Count; i++)
82 {
83 if (accessRules[i] is PipeAccessRule pipeAccessRule && pipeAccessRule.PipeAccessRights == rule.PipeAccessRights && pipeAccessRule.IdentityReference == rule.IdentityReference && pipeAccessRule.AccessControlType == rule.AccessControlType)
84 {
86 return;
87 }
88 }
89 if (rule.PipeAccessRights != PipeAccessRights.FullControl)
90 {
92 }
93 else
94 {
96 }
97 }
98
99 public void AddAuditRule(PipeAuditRule rule)
100 {
101 AddAuditRule((AuditRule)rule);
102 }
103
104 public void SetAuditRule(PipeAuditRule rule)
105 {
106 SetAuditRule((AuditRule)rule);
107 }
108
110 {
111 return RemoveAuditRule((AuditRule)rule);
112 }
113
115 {
117 }
118
123
124 public override AccessRule AccessRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type)
125 {
126 if (inheritanceFlags != 0)
127 {
128 throw new ArgumentException(System.SR.Argument_NonContainerInvalidAnyFlag, "inheritanceFlags");
129 }
130 if (propagationFlags != 0)
131 {
132 throw new ArgumentException(System.SR.Argument_NonContainerInvalidAnyFlag, "propagationFlags");
133 }
134 return new PipeAccessRule(identityReference, accessMask, isInherited, type);
135 }
136
137 public sealed override AuditRule AuditRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags)
138 {
139 if (inheritanceFlags != 0)
140 {
141 throw new ArgumentException(System.SR.Argument_NonContainerInvalidAnyFlag, "inheritanceFlags");
142 }
143 if (propagationFlags != 0)
144 {
145 throw new ArgumentException(System.SR.Argument_NonContainerInvalidAnyFlag, "propagationFlags");
146 }
147 return new PipeAuditRule(identityReference, accessMask, isInherited, flags);
148 }
149
151 {
152 AccessControlSections accessControlSections = AccessControlSections.None;
153 if (base.AccessRulesModified)
154 {
155 accessControlSections = AccessControlSections.Access;
156 }
157 if (base.AuditRulesModified)
158 {
159 accessControlSections |= AccessControlSections.Audit;
160 }
161 if (base.OwnerModified)
162 {
163 accessControlSections |= AccessControlSections.Owner;
164 }
165 if (base.GroupModified)
166 {
167 accessControlSections |= AccessControlSections.Group;
168 }
169 return accessControlSections;
170 }
171
172 protected internal void Persist(SafeHandle handle)
173 {
174 WriteLock();
175 try
176 {
177 AccessControlSections accessControlSectionsFromChanges = GetAccessControlSectionsFromChanges();
178 Persist(handle, accessControlSectionsFromChanges);
179 bool flag2 = (base.AccessRulesModified = false);
180 bool flag4 = (base.AuditRulesModified = flag2);
181 bool ownerModified = (base.GroupModified = flag4);
182 base.OwnerModified = ownerModified;
183 }
184 finally
185 {
186 WriteUnlock();
187 }
188 }
189
190 protected internal void Persist(string name)
191 {
192 WriteLock();
193 try
194 {
195 AccessControlSections accessControlSectionsFromChanges = GetAccessControlSectionsFromChanges();
196 Persist(name, accessControlSectionsFromChanges);
197 bool flag2 = (base.AccessRulesModified = false);
198 bool flag4 = (base.AuditRulesModified = flag2);
199 bool ownerModified = (base.GroupModified = flag4);
200 base.OwnerModified = ownerModified;
201 }
202 finally
203 {
204 WriteUnlock();
205 }
206 }
207}
PipeAccessRights PipeAccessRights
static int AccessMaskFromRights(PipeAccessRights rights, AccessControlType controlType)
void AddAuditRule(PipeAuditRule rule)
void RemoveAuditRuleSpecific(PipeAuditRule rule)
void SetAccessRule(PipeAccessRule rule)
bool RemoveAccessRule(PipeAccessRule rule)
void RemoveAuditRuleAll(PipeAuditRule rule)
PipeSecurity(SafePipeHandle safeHandle, AccessControlSections includeSections)
bool RemoveAuditRule(PipeAuditRule rule)
void ResetAccessRule(PipeAccessRule rule)
AccessControlSections GetAccessControlSectionsFromChanges()
void RemoveAccessRuleSpecific(PipeAccessRule rule)
override AuditRule AuditRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags)
void Persist(SafeHandle handle)
void SetAuditRule(PipeAuditRule rule)
override AccessRule AccessRuleFactory(IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type)
void AddAccessRule(PipeAccessRule rule)
static string Argument_NonContainerInvalidAnyFlag
Definition SR.cs:20
Definition SR.cs:7
AuthorizationRuleCollection GetAccessRules(bool includeExplicit, bool includeInherited, Type targetType)