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
- SerialErrors.cs
- TraceHandler.cs
- GestureRecognitionResult.cs
- CriticalFinalizerObject.cs
- DockPanel.cs
- ToolStripInSituService.cs
- XmlDictionaryWriter.cs
- MultiByteCodec.cs
- xmlfixedPageInfo.cs
- ApplicationInfo.cs
- FormCollection.cs
- CompositeDataBoundControl.cs
- Certificate.cs
- DataException.cs
- DbDeleteCommandTree.cs
- CharEntityEncoderFallback.cs
- MissingMethodException.cs
- CompositeScriptReferenceEventArgs.cs
- EmptyControlCollection.cs
- EntityRecordInfo.cs
- DataSourceControl.cs
- DiagnosticsConfiguration.cs
- BitmapDownload.cs
- ToolbarAUtomationPeer.cs
- Sorting.cs
- PersonalizationProvider.cs
- FormViewPagerRow.cs
- ToolTip.cs
- Triangle.cs
- SubstitutionResponseElement.cs
- RequestCacheEntry.cs
- PerformanceCounterPermissionEntry.cs
- Matrix3DConverter.cs
- PrintControllerWithStatusDialog.cs
- ConfigurationValidatorAttribute.cs
- XPathScanner.cs
- SRef.cs
- DoubleUtil.cs
- HtmlDocument.cs
- HttpPostedFile.cs
- HtmlFormWrapper.cs
- EmbossBitmapEffect.cs
- CfgArc.cs
- UInt32Storage.cs
- _SSPIWrapper.cs
- WinFormsSpinner.cs
- XPathBinder.cs
- IdentityReference.cs
- Quaternion.cs
- CompositeTypefaceMetrics.cs
- InfoCardProofToken.cs
- ETagAttribute.cs
- BaseCodeDomTreeGenerator.cs
- ComponentDispatcherThread.cs
- SymbolType.cs
- SmtpCommands.cs
- HtmlWindowCollection.cs
- SchemaImporter.cs
- TrackBar.cs
- DllNotFoundException.cs
- HScrollProperties.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- LineInfo.cs
- RsaSecurityKey.cs
- PropertyValueChangedEvent.cs
- WebPartConnectionsCloseVerb.cs
- Helpers.cs
- RegexGroup.cs
- BuildProvidersCompiler.cs
- ColorConvertedBitmap.cs
- KeyGestureConverter.cs
- TextRangeAdaptor.cs
- EditorPartDesigner.cs
- Schema.cs
- CanonicalXml.cs
- XPathArrayIterator.cs
- SqlConnectionPoolProviderInfo.cs
- TypeElement.cs
- SmiEventSink_Default.cs
- UTF7Encoding.cs
- WebPartExportVerb.cs
- EventSetterHandlerConverter.cs
- MulticastOption.cs
- ProviderMetadata.cs
- JsonServiceDocumentSerializer.cs
- HttpHandlerActionCollection.cs
- LayoutTable.cs
- SingleResultAttribute.cs
- DesignerCommandSet.cs
- EnumerableCollectionView.cs
- ComplexTypeEmitter.cs
- CanExecuteRoutedEventArgs.cs
- ContentPresenter.cs
- DayRenderEvent.cs
- SHA256Managed.cs
- MetadataItemEmitter.cs
- ToolboxItemLoader.cs
- BaseTreeIterator.cs
- AuthStoreRoleProvider.cs
- XamlReader.cs