System.IO.Pipes.PipeAccessRule.AccessMaskFromRights C# (CSharp) Méthode

AccessMaskFromRights() static private méthode

static private AccessMaskFromRights ( PipeAccessRights rights, AccessControlType controlType ) : int
rights PipeAccessRights
controlType AccessControlType
Résultat int
        internal static int AccessMaskFromRights(PipeAccessRights rights, AccessControlType controlType)
        {
            if (rights < (PipeAccessRights)0 || rights > (PipeAccessRights.FullControl | PipeAccessRights.AccessSystemSecurity))
                throw new ArgumentOutOfRangeException(nameof(rights), SR.ArgumentOutOfRange_NeedValidPipeAccessRights);

            if (controlType == AccessControlType.Allow)
            {
                rights |= PipeAccessRights.Synchronize;
            }
            else if (controlType == AccessControlType.Deny)
            {
                if (rights != PipeAccessRights.FullControl)
                {
                    rights &= ~PipeAccessRights.Synchronize;
                }
            }

            return (int)rights;
        }

Usage Example

Exemple #1
0
        public void RemoveAccessRuleSpecific(PipeAccessRule rule)
        {
            if (rule == null)
            {
                throw new ArgumentNullException(nameof(rule));
            }

            // If the rule to be removed matches what is there currently then
            // remove it unaltered. That is, don't mask off the Synchronize bit
            AuthorizationRuleCollection rules = GetAccessRules(true, true,
                                                               rule.IdentityReference.GetType());

            for (int i = 0; i < rules.Count; i++)
            {
                PipeAccessRule fsrule = rules[i] as PipeAccessRule;

                if ((fsrule != null) && (fsrule.PipeAccessRights == rule.PipeAccessRights) &&
                    (fsrule.IdentityReference == rule.IdentityReference) &&
                    (fsrule.AccessControlType == rule.AccessControlType))
                {
                    base.RemoveAccessRuleSpecific(rule);
                    return;
                }
            }

            // It wasn't an exact match so try masking the sychronize bit (that is
            // automatically added for Allow) before removing the ACL. The logic
            // here should be same as Deny and hence fake a call to
            // AccessMaskFromRights as though the ACL is for Deny
            if (rule.PipeAccessRights != PipeAccessRights.FullControl)
            {
                base.RemoveAccessRuleSpecific(new PipeAccessRule(rule.IdentityReference,
                                                                 PipeAccessRule.AccessMaskFromRights(rule.PipeAccessRights, AccessControlType.Deny),
                                                                 false,
                                                                 rule.AccessControlType));
            }
            else
            {
                base.RemoveAccessRuleSpecific(rule);
            }
        }
All Usage Examples Of System.IO.Pipes.PipeAccessRule::AccessMaskFromRights