private void ExportExtendedAcls(AclFlags extendedAclFlags, ISourceFolder srcFolder, IFolderProxy targetFolder) { base.VerifyCapability(MRSProxyCapabilities.SetItemProperties, CapabilityCheck.BothMRSAndOtherProvider); if (extendedAclFlags.HasFlag(AclFlags.FolderAcl)) { PropValueData[][] extendedAcl = srcFolder.GetExtendedAcl(AclFlags.FolderAcl); if (extendedAcl != null) { targetFolder.SetItemProperties(new FolderAcl(AclFlags.FolderAcl, extendedAcl)); } } if (extendedAclFlags.HasFlag(AclFlags.FreeBusyAcl)) { PropValueData[][] extendedAcl2 = srcFolder.GetExtendedAcl(AclFlags.FreeBusyAcl); if (extendedAcl2 != null) { targetFolder.SetItemProperties(new FolderAcl(AclFlags.FreeBusyAcl, extendedAcl2)); } } }
PropValueData[][] IFolder.GetExtendedAcl(AclFlags aclFlags) { MrsTracer.Provider.Function("StorageFolder.GetExtendedAcl: flags = {0}, {1}", new object[] { aclFlags, this.DisplayNameForTracing }); if (!this.HasSecurityDescriptor(aclFlags)) { return(null); } ModifyTableOptions modifyTableOptions = aclFlags.HasFlag(AclFlags.FreeBusyAcl) ? ModifyTableOptions.FreeBusyAware : ModifyTableOptions.None; modifyTableOptions |= ModifyTableOptions.ExtendedPermissionInformation; return(this.GetAcl(modifyTableOptions, StorageFolder.ExtendedAclTableColumns)); }