+ if (null == rawSecurityDescriptor)
+ throw new ArgumentNullException ("rawSecurityDescriptor");
+
+ SystemAcl sacl = null;
+ if (null != rawSecurityDescriptor.SystemAcl)
+ sacl = new SystemAcl (isContainer, isDS, rawSecurityDescriptor.SystemAcl);
+
+ DiscretionaryAcl dacl = null;
+ if (null != rawSecurityDescriptor.DiscretionaryAcl)
+ dacl = new DiscretionaryAcl (isContainer, isDS, rawSecurityDescriptor.DiscretionaryAcl);
+
+ Init (isContainer, isDS,
+ rawSecurityDescriptor.ControlFlags,
+ rawSecurityDescriptor.Owner,
+ rawSecurityDescriptor.Group,
+ sacl, dacl);
+ }
+
+ void Init (bool isContainer, bool isDS,
+ ControlFlags flags,
+ SecurityIdentifier owner,
+ SecurityIdentifier group,
+ SystemAcl systemAcl,
+ DiscretionaryAcl discretionaryAcl)
+ {
+ this.flags = flags & ~ControlFlags.SystemAclPresent;
+ this.is_container = isContainer;
+ this.is_ds = isDS;
+
+ Owner = owner;
+ Group = group;
+ SystemAcl = systemAcl;
+ DiscretionaryAcl = discretionaryAcl;