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
- ServiceOperationWrapper.cs
- RectangleConverter.cs
- CodeThrowExceptionStatement.cs
- RequestResizeEvent.cs
- QueryAccessibilityHelpEvent.cs
- SQLDouble.cs
- Missing.cs
- controlskin.cs
- OdbcTransaction.cs
- Int16KeyFrameCollection.cs
- MenuAutomationPeer.cs
- AsymmetricCryptoHandle.cs
- IPEndPoint.cs
- GridPattern.cs
- TypeHelper.cs
- Tablet.cs
- DBCommand.cs
- DbBuffer.cs
- MailWebEventProvider.cs
- codemethodreferenceexpression.cs
- DataSourceConverter.cs
- SolidColorBrush.cs
- BaseCollection.cs
- SqlDataReader.cs
- PersonalizationStateInfoCollection.cs
- XmlHierarchicalEnumerable.cs
- SafeBitVector32.cs
- Types.cs
- TextModifierScope.cs
- TimeoutException.cs
- HtmlInputControl.cs
- hwndwrapper.cs
- FontStyleConverter.cs
- MultipartContentParser.cs
- MultipleViewProviderWrapper.cs
- StorageComplexPropertyMapping.cs
- Dictionary.cs
- EventListenerClientSide.cs
- ConstrainedGroup.cs
- CommandSet.cs
- RightsManagementInformation.cs
- Transaction.cs
- CustomExpressionEventArgs.cs
- AppSettingsSection.cs
- ResourcePermissionBase.cs
- ToolboxItem.cs
- NamespaceQuery.cs
- ImageAnimator.cs
- MultilineStringConverter.cs
- WebPartChrome.cs
- WeakReadOnlyCollection.cs
- ProxyHelper.cs
- FileDialogPermission.cs
- DoWorkEventArgs.cs
- _NTAuthentication.cs
- ImageField.cs
- DataStreamFromComStream.cs
- webeventbuffer.cs
- ZeroOpNode.cs
- ETagAttribute.cs
- DynamicDiscoveryDocument.cs
- RowsCopiedEventArgs.cs
- InternalMappingException.cs
- DataGridRowHeaderAutomationPeer.cs
- ClaimSet.cs
- RotateTransform3D.cs
- ConsoleCancelEventArgs.cs
- OwnerDrawPropertyBag.cs
- EntryPointNotFoundException.cs
- EmptyCollection.cs
- TemplateModeChangedEventArgs.cs
- HitTestDrawingContextWalker.cs
- HostedElements.cs
- TimeBoundedCache.cs
- TextBox.cs
- WaveHeader.cs
- RightsManagementEncryptedStream.cs
- SettingsSavedEventArgs.cs
- XmlSchemaObject.cs
- ItemCheckedEvent.cs
- TextAction.cs
- _ConnectStream.cs
- FunctionGenerator.cs
- XslVisitor.cs
- CaseInsensitiveHashCodeProvider.cs
- ToolStripItemRenderEventArgs.cs
- AppDomainFactory.cs
- RunWorkerCompletedEventArgs.cs
- BamlRecordReader.cs
- Int32AnimationUsingKeyFrames.cs
- EventLogWatcher.cs
- GPStream.cs
- DataBoundControl.cs
- KeysConverter.cs
- ListItemParagraph.cs
- LinqDataSourceValidationException.cs
- RefreshPropertiesAttribute.cs
- LookupNode.cs
- NullToBooleanConverter.cs
- DesignTimeValidationFeature.cs