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
- Transform.cs
- RunClient.cs
- XamlStyleSerializer.cs
- MailMessage.cs
- PackageRelationshipCollection.cs
- DesignerHierarchicalDataSourceView.cs
- AtomServiceDocumentSerializer.cs
- SortedDictionary.cs
- XmlUtil.cs
- SQLDoubleStorage.cs
- _CookieModule.cs
- SQLBinaryStorage.cs
- QilBinary.cs
- WindowsSlider.cs
- DataSysAttribute.cs
- HMACSHA512.cs
- WebPageTraceListener.cs
- GetReadStreamResult.cs
- PeerFlooder.cs
- Helpers.cs
- DictionaryBase.cs
- ScrollContentPresenter.cs
- IconHelper.cs
- XmlSchemaInferenceException.cs
- SqlMethodTransformer.cs
- TreeIterator.cs
- NullableBoolConverter.cs
- RemotingException.cs
- QilBinary.cs
- SqlUDTStorage.cs
- StyleModeStack.cs
- SymLanguageVendor.cs
- XmlDeclaration.cs
- ForceCopyBuildProvider.cs
- RewritingProcessor.cs
- CapabilitiesRule.cs
- MultipleCopiesCollection.cs
- BrushConverter.cs
- Function.cs
- JsonByteArrayDataContract.cs
- FaultDesigner.cs
- SchemeSettingElementCollection.cs
- ToolStripContentPanel.cs
- XmlHierarchicalEnumerable.cs
- MailBnfHelper.cs
- unitconverter.cs
- Guid.cs
- FixedSOMFixedBlock.cs
- FormViewPageEventArgs.cs
- CodeIdentifier.cs
- mongolianshape.cs
- SqlDataAdapter.cs
- OdbcConnectionFactory.cs
- Set.cs
- TableColumnCollection.cs
- EventListener.cs
- BaseUriHelper.cs
- EncoderExceptionFallback.cs
- Table.cs
- ProvidePropertyAttribute.cs
- HtmlPanelAdapter.cs
- localization.cs
- DocumentApplication.cs
- GenerateScriptTypeAttribute.cs
- NetworkStream.cs
- UpDownBase.cs
- XmlIncludeAttribute.cs
- TableItemStyle.cs
- EntityDataSourceContainerNameItem.cs
- CodePropertyReferenceExpression.cs
- SendActivityEventArgs.cs
- securestring.cs
- X509ChainElement.cs
- PeerChannelFactory.cs
- PixelFormat.cs
- ObjectTag.cs
- DecoderNLS.cs
- SystemWebSectionGroup.cs
- QueryCursorEventArgs.cs
- MultipartContentParser.cs
- CodeArrayIndexerExpression.cs
- BindingManagerDataErrorEventArgs.cs
- CaseInsensitiveOrdinalStringComparer.cs
- BooleanProjectedSlot.cs
- RootBrowserWindow.cs
- SQLDecimalStorage.cs
- CollectionBuilder.cs
- TreeNodeBinding.cs
- TextSelectionProcessor.cs
- NestedContainer.cs
- PriorityItem.cs
- FormClosedEvent.cs
- MessageBox.cs
- SurrogateSelector.cs
- AdapterUtil.cs
- NotCondition.cs
- ExpressionEditorAttribute.cs
- Span.cs
- WebPartManager.cs
- activationcontext.cs