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
- ResourcesChangeInfo.cs
- RemoteWebConfigurationHost.cs
- FilteredDataSetHelper.cs
- Operators.cs
- DoubleLinkList.cs
- DataRelation.cs
- ContractMethodParameterInfo.cs
- QueryStringParameter.cs
- SchemaName.cs
- Partitioner.cs
- IndexedDataBuffer.cs
- Enumerable.cs
- InspectionWorker.cs
- DataGridViewCellMouseEventArgs.cs
- InvalidPrinterException.cs
- ObjectViewQueryResultData.cs
- XmlAttributeOverrides.cs
- CacheRequest.cs
- InternalCache.cs
- DynamicEntity.cs
- SoapMessage.cs
- PropertySet.cs
- SystemFonts.cs
- CharacterMetricsDictionary.cs
- ComponentEditorPage.cs
- ActivityInfo.cs
- DirectoryObjectSecurity.cs
- NativeMethods.cs
- PageHandlerFactory.cs
- CodeGen.cs
- ParameterReplacerVisitor.cs
- FixedSOMFixedBlock.cs
- Configuration.cs
- _DigestClient.cs
- VersionedStreamOwner.cs
- GC.cs
- HtmlFormParameterReader.cs
- RemoteX509Token.cs
- XamlSerializationHelper.cs
- Crc32Helper.cs
- PropertyChange.cs
- StateBag.cs
- SchemaObjectWriter.cs
- Update.cs
- HelpInfo.cs
- BidOverLoads.cs
- BaseDataList.cs
- OleDbParameterCollection.cs
- ConfigXmlElement.cs
- ListBoxAutomationPeer.cs
- PenThread.cs
- Debugger.cs
- ExitEventArgs.cs
- mactripleDES.cs
- ClientTargetCollection.cs
- Reference.cs
- DocumentEventArgs.cs
- returneventsaver.cs
- BoundColumn.cs
- ListControlActionList.cs
- ReadOnlyDictionary.cs
- LinqToSqlWrapper.cs
- CodeRegionDirective.cs
- Int16Animation.cs
- MultiTouchSystemGestureLogic.cs
- SqlBooleanMismatchVisitor.cs
- HebrewCalendar.cs
- Operator.cs
- DataGridColumnsPage.cs
- AuthenticationSchemesHelper.cs
- mansign.cs
- RSAOAEPKeyExchangeDeformatter.cs
- TypeBuilder.cs
- UIElementParagraph.cs
- EntityDataSourceReferenceGroup.cs
- Underline.cs
- CssTextWriter.cs
- RtfToXamlLexer.cs
- StructuredType.cs
- securitycriticaldataClass.cs
- MissingMemberException.cs
- ChangeTracker.cs
- Function.cs
- DesigntimeLicenseContextSerializer.cs
- DBSqlParser.cs
- DependencyObjectType.cs
- PersonalizableAttribute.cs
- WebPageTraceListener.cs
- VoiceInfo.cs
- ConfigurationValidatorAttribute.cs
- CustomError.cs
- TransformationRules.cs
- Int16AnimationUsingKeyFrames.cs
- SharedPersonalizationStateInfo.cs
- ConfigurationSectionGroupCollection.cs
- PnrpPermission.cs
- XamlRtfConverter.cs
- sqlstateclientmanager.cs
- DropShadowBitmapEffect.cs
- Assign.cs