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
- BuildDependencySet.cs
- BitmapEffectDrawing.cs
- BypassElementCollection.cs
- HttpFileCollectionWrapper.cs
- ThicknessConverter.cs
- XmlSchemaImport.cs
- HttpApplication.cs
- ContentTextAutomationPeer.cs
- DocumentGridContextMenu.cs
- HtmlShim.cs
- MessageQuerySet.cs
- KeyTimeConverter.cs
- XamlBrushSerializer.cs
- FileLogRecordHeader.cs
- ListBindableAttribute.cs
- Queue.cs
- WebPartUtil.cs
- ActivityExecutor.cs
- SvcMapFileSerializer.cs
- UInt16.cs
- RemotingHelper.cs
- WriteableBitmap.cs
- nulltextnavigator.cs
- CacheModeValueSerializer.cs
- XmlProcessingInstruction.cs
- AsymmetricKeyExchangeFormatter.cs
- NegotiationTokenProvider.cs
- BrowsableAttribute.cs
- RichTextBox.cs
- BamlLocalizabilityResolver.cs
- NavigationWindow.cs
- TraceProvider.cs
- NativeMethods.cs
- EntityClientCacheEntry.cs
- StreamingContext.cs
- BamlLocalizationDictionary.cs
- HashAlgorithm.cs
- CompositeKey.cs
- Select.cs
- WorkflowRuntimeBehavior.cs
- ClientCultureInfo.cs
- ByteStorage.cs
- OrderablePartitioner.cs
- StrokeNodeData.cs
- Label.cs
- AnnotationComponentManager.cs
- DelegatedStream.cs
- DesignSurfaceServiceContainer.cs
- Listbox.cs
- FileSecurity.cs
- StringFunctions.cs
- XmlDataSource.cs
- SchemaConstraints.cs
- ClientScriptItemCollection.cs
- XmlUtilWriter.cs
- SoapCodeExporter.cs
- URLBuilder.cs
- CssStyleCollection.cs
- SelectionWordBreaker.cs
- _NetRes.cs
- ReferenceService.cs
- CommonDialog.cs
- XmlToDatasetMap.cs
- XmlDocument.cs
- CoTaskMemHandle.cs
- EpmTargetTree.cs
- ImportContext.cs
- Themes.cs
- ExpressionConverter.cs
- HopperCache.cs
- ListSortDescription.cs
- CultureSpecificCharacterBufferRange.cs
- ObjectContextServiceProvider.cs
- validationstate.cs
- SchemaNames.cs
- GeneralTransform3DTo2D.cs
- HttpWebResponse.cs
- CryptoApi.cs
- Char.cs
- _NTAuthentication.cs
- CellQuery.cs
- IisTraceWebEventProvider.cs
- ClientTargetSection.cs
- PointCollection.cs
- Crypto.cs
- SoapSchemaExporter.cs
- PanningMessageFilter.cs
- XmlSchemaAnyAttribute.cs
- DocumentReferenceCollection.cs
- DebugInfoGenerator.cs
- AttributeSetAction.cs
- InfiniteTimeSpanConverter.cs
- MergeExecutor.cs
- _RegBlobWebProxyDataBuilder.cs
- MailAddressCollection.cs
- autovalidator.cs
- EnlistmentState.cs
- SudsParser.cs
- ResourcePermissionBaseEntry.cs
- ServiceContractViewControl.Designer.cs