Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / TrustUi / MS / Internal / documents / Application / StreamDocument.cs / 1 / StreamDocument.cs
//------------------------------------------------------------------------------ //// Copyright (C) Microsoft Corporation. All rights reserved. // //// Extends Document with a support for StreamProxy versus simply stream. // // // History: // 08/28/2005: [....]: Initial implementation. //----------------------------------------------------------------------------- using System.IO; using System.Security; namespace MS.Internal.Documents.Application { ////// Extends Document with a support for StreamProxy versus simply stream. /// ///The type of stream to back the document with. /// internal class StreamDocument: Document where T : StreamProxy { #region Constructors //------------------------------------------------------------------------- // Constructors //------------------------------------------------------------------------- internal StreamDocument(Document dependency) : base(dependency) { } #endregion Constructors #region Internal Properties //-------------------------------------------------------------------------- // Internal Properties //------------------------------------------------------------------------- /// /// internal override Stream Destination { get { return _destination.Value; } } ////// /// The T that is backing the Destination stream. /// ////// Critical: /// - set critical field /// - field is critical as security descisions are based on it /// - audit only DocumentControllers & self should set /// internal T DestinationProxy { get { return _destination.Value; } [SecurityCritical] set { _destination.Value = value; } } ////// internal override Stream Source { get { return _source.Value; } } ////// /// The T that is backing the Source stream. /// ////// Critical: /// - set critical field /// - field is critical as security descisions are based on it /// - audit only DocumentControllers & self should set /// internal T SourceProxy { get { return _source.Value; } [SecurityCritical] set { _source.Value = value; } } ////// internal override Stream Workspace { get { return _workspace.Value; } } ////// /// The T that is backing the Workspace stream. /// ////// Critical: /// - set critical field /// - field is critical as security descisions are based on it /// - audit only DocumentControllers & self should set /// internal T WorkspaceProxy { get { return _workspace.Value; } [SecurityCritical] set { _workspace.Value = value; } } #endregion Internal Properties #region Protected Methods //-------------------------------------------------------------------------- // Protected Methods //-------------------------------------------------------------------------- ////// Will close streams in the reverse order of intended creation. /// ////// Critical /// 1) Calling critical property setters *Proxy. /// TreatAsSafe /// 1) Setting them to known safe value null. /// [SecurityCritical, SecurityTreatAsSafe] protected void ReleaseStreams() { try { // closing in revers order of creation if (DestinationProxy != null) { if (DestinationProxy == SourceProxy) { SourceProxy = null; } DestinationProxy.Close(); DestinationProxy = null; } } finally { try { if (WorkspaceProxy != null) { WorkspaceProxy.Close(); WorkspaceProxy = null; } } finally { if (SourceProxy != null) { SourceProxy.Close(); SourceProxy = null; } } } } #endregion Protected Methods #region IDisposable Members //------------------------------------------------------------------------- // IDisposable Members //-------------------------------------------------------------------------- ////// protected override void Dispose(bool disposing) { try { if (disposing) { ReleaseStreams(); } } finally { base.Dispose(true); } } #endregion IDisposable Members #region Private Fields //------------------------------------------------------------------------- // Private Fields //------------------------------------------------------------------------- private SecurityCriticalDataForSet/// _destination = new SecurityCriticalDataForSet (); private SecurityCriticalDataForSet _source = new SecurityCriticalDataForSet (); private SecurityCriticalDataForSet _workspace = new SecurityCriticalDataForSet (); #endregion Private Fields } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- UnsafeNativeMethods.cs
- RemotingClientProxy.cs
- ComponentRenameEvent.cs
- BaseHashHelper.cs
- StatusBar.cs
- XmlTypeAttribute.cs
- PathGeometry.cs
- DiagnosticsConfigurationHandler.cs
- SmtpTransport.cs
- RenamedEventArgs.cs
- MimeTypeAttribute.cs
- TraceUtility.cs
- SerializationSectionGroup.cs
- Unit.cs
- PaintEvent.cs
- DateTimeConstantAttribute.cs
- CodeConstructor.cs
- TemplatedAdorner.cs
- IUnknownConstantAttribute.cs
- HtmlInputFile.cs
- IdentityManager.cs
- DocumentPageHost.cs
- DiagnosticsConfiguration.cs
- ListViewDeleteEventArgs.cs
- TreeNodeStyleCollection.cs
- WorkflowServiceNamespace.cs
- PartDesigner.cs
- PersianCalendar.cs
- ObservableCollectionDefaultValueFactory.cs
- DateTimeFormat.cs
- RuleSet.cs
- MultiAsyncResult.cs
- SystemIPv6InterfaceProperties.cs
- SafeRegistryHandle.cs
- Odbc32.cs
- TextOutput.cs
- NumericUpDown.cs
- KeyboardDevice.cs
- ConnectionStringEditor.cs
- ToolStripEditorManager.cs
- FontUnit.cs
- ParameterCollection.cs
- Overlapped.cs
- ScriptingRoleServiceSection.cs
- OnOperation.cs
- RightsManagementEncryptionTransform.cs
- AttachInfo.cs
- ForeignKeyConstraint.cs
- BasicExpressionVisitor.cs
- TagMapCollection.cs
- ProfessionalColors.cs
- WmlPageAdapter.cs
- SessionState.cs
- DefaultMemberAttribute.cs
- cache.cs
- Content.cs
- PolyLineSegment.cs
- RadioButton.cs
- ConstrainedDataObject.cs
- SpeakInfo.cs
- FlowThrottle.cs
- BindingMAnagerBase.cs
- Trace.cs
- DbReferenceCollection.cs
- PriorityBinding.cs
- EFColumnProvider.cs
- EventLogConfiguration.cs
- SrgsSubset.cs
- NotConverter.cs
- WindowsTreeView.cs
- MyContact.cs
- NCryptNative.cs
- CodeDelegateCreateExpression.cs
- UriExt.cs
- ProfileGroupSettings.cs
- FilterEventArgs.cs
- HttpRawResponse.cs
- WebBrowserBase.cs
- EdmComplexTypeAttribute.cs
- ZipIOFileItemStream.cs
- ProfilePropertySettingsCollection.cs
- SecurityIdentifierElement.cs
- CultureInfo.cs
- HuffModule.cs
- ZoneMembershipCondition.cs
- ApplicationSecurityManager.cs
- InternalBufferManager.cs
- PrinterSettings.cs
- DbXmlEnabledProviderManifest.cs
- BitmapImage.cs
- UnsafeNativeMethodsMilCoreApi.cs
- CapabilitiesSection.cs
- EntityConnection.cs
- PathFigureCollection.cs
- GraphicsContainer.cs
- CatalogPart.cs
- SqlParameter.cs
- DbConnectionPoolOptions.cs
- ChangePassword.cs
- BaseParaClient.cs