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
- PeerPresenceInfo.cs
- XPathSingletonIterator.cs
- RegexCharClass.cs
- DataServiceQueryException.cs
- DbConnectionPoolGroupProviderInfo.cs
- Propagator.cs
- Win32SafeHandles.cs
- ReachSerializationCacheItems.cs
- XPathScanner.cs
- FileDialog.cs
- HostSecurityManager.cs
- SchemaNames.cs
- QualificationDataItem.cs
- DoubleKeyFrameCollection.cs
- XamlTemplateSerializer.cs
- XsdCachingReader.cs
- QilStrConcat.cs
- StaticFileHandler.cs
- SharedStatics.cs
- ChtmlCalendarAdapter.cs
- HttpRequestTraceRecord.cs
- Errors.cs
- RepeaterItemEventArgs.cs
- ObjectStateManager.cs
- SingleAnimationBase.cs
- FlowPanelDesigner.cs
- OutputScopeManager.cs
- StylusButtonEventArgs.cs
- Utils.cs
- SmiContextFactory.cs
- ServiceChannel.cs
- OutOfMemoryException.cs
- RowUpdatingEventArgs.cs
- VerbConverter.cs
- MessageProperties.cs
- QueueProcessor.cs
- WebPartTracker.cs
- SplineQuaternionKeyFrame.cs
- SQLBinary.cs
- ColumnWidthChangingEvent.cs
- StrongNameKeyPair.cs
- ZipIOCentralDirectoryFileHeader.cs
- ControlTemplate.cs
- AssemblySettingAttributes.cs
- SortKey.cs
- ReflectionTypeLoadException.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- SystemThemeKey.cs
- UrlPath.cs
- PrintingPermissionAttribute.cs
- MatrixTransform3D.cs
- Registry.cs
- SimpleRecyclingCache.cs
- DirectoryInfo.cs
- SocketConnection.cs
- Crc32Helper.cs
- InternalPermissions.cs
- EntityDataSourceContextCreatedEventArgs.cs
- WebPartDisplayModeEventArgs.cs
- SoapProtocolReflector.cs
- TextHidden.cs
- ErrorsHelper.cs
- BitmapData.cs
- Tracking.cs
- BaseWebProxyFinder.cs
- GroupItemAutomationPeer.cs
- StringFreezingAttribute.cs
- ObjectDataSourceFilteringEventArgs.cs
- ScriptModule.cs
- AnnotationStore.cs
- FlowLayoutSettings.cs
- IsolatedStorage.cs
- BindingExpressionBase.cs
- FastEncoder.cs
- DispatcherHookEventArgs.cs
- COSERVERINFO.cs
- CqlParser.cs
- Converter.cs
- Property.cs
- Lasso.cs
- LocalizationComments.cs
- Point3D.cs
- ColorKeyFrameCollection.cs
- ContainerUIElement3D.cs
- DataGridViewCellConverter.cs
- Peer.cs
- FatalException.cs
- UshortList2.cs
- BitmapEditor.cs
- ContainerVisual.cs
- CodeDirectiveCollection.cs
- JournalNavigationScope.cs
- BinaryCommonClasses.cs
- Vector3DConverter.cs
- CollectionExtensions.cs
- BrowserCapabilitiesCodeGenerator.cs
- Visual3DCollection.cs
- IfAction.cs
- TemplateColumn.cs
- CopyNamespacesAction.cs