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
- DurationConverter.cs
- DeobfuscatingStream.cs
- TextDpi.cs
- KeysConverter.cs
- DataGridViewUtilities.cs
- CopyNamespacesAction.cs
- SqlProfileProvider.cs
- XmlDocumentFragment.cs
- VisualStateGroup.cs
- AncestorChangedEventArgs.cs
- XmlUnspecifiedAttribute.cs
- Parameter.cs
- ExtensionFile.cs
- LineSegment.cs
- GroupItemAutomationPeer.cs
- SpotLight.cs
- WebServiceMethodData.cs
- TextEditorDragDrop.cs
- AssemblyResourceLoader.cs
- CodeAttributeArgument.cs
- Schema.cs
- PositiveTimeSpanValidator.cs
- AddressUtility.cs
- _DomainName.cs
- Emitter.cs
- ConfigurationValidatorBase.cs
- RijndaelManagedTransform.cs
- MultiSelectRootGridEntry.cs
- CompositeScriptReferenceEventArgs.cs
- OleDbDataReader.cs
- MasterPageParser.cs
- HyperLink.cs
- DeriveBytes.cs
- DataFormats.cs
- ProfessionalColors.cs
- OTFRasterizer.cs
- DefaultObjectMappingItemCollection.cs
- PlatformCulture.cs
- HttpRequestCacheValidator.cs
- OverflowException.cs
- PerformanceCounterPermissionEntryCollection.cs
- RijndaelCryptoServiceProvider.cs
- UrlMappingsSection.cs
- HeaderCollection.cs
- FileSystemEventArgs.cs
- QuaternionKeyFrameCollection.cs
- OrderedParallelQuery.cs
- Constants.cs
- AggregateNode.cs
- DiscriminatorMap.cs
- SystemUdpStatistics.cs
- ListParaClient.cs
- XmlCharType.cs
- Schedule.cs
- Parameter.cs
- RegistryPermission.cs
- ProfileModule.cs
- WebServiceErrorEvent.cs
- XhtmlBasicCalendarAdapter.cs
- DesignerActionItemCollection.cs
- LogReservationCollection.cs
- WSSecureConversation.cs
- HeaderedContentControl.cs
- HandleCollector.cs
- TableLayoutSettingsTypeConverter.cs
- XmlCharCheckingReader.cs
- RecognizerBase.cs
- SoundPlayerAction.cs
- MouseEvent.cs
- HotSpot.cs
- XmlUrlEditor.cs
- EntityDataSourceUtil.cs
- UpdatePanelTrigger.cs
- Vector.cs
- WebDescriptionAttribute.cs
- Part.cs
- SerialPort.cs
- DesignerActionGlyph.cs
- Int64Converter.cs
- Avt.cs
- WebPartTransformerAttribute.cs
- Sql8ExpressionRewriter.cs
- BasicCellRelation.cs
- TextRangeEditTables.cs
- NullRuntimeConfig.cs
- DelegateHelpers.cs
- IntranetCredentialPolicy.cs
- MsmqInputChannelListener.cs
- UserPersonalizationStateInfo.cs
- TextViewSelectionProcessor.cs
- XmlCustomFormatter.cs
- IisTraceWebEventProvider.cs
- rsa.cs
- XmlHierarchicalDataSourceView.cs
- Timer.cs
- ImageAttributes.cs
- SortableBindingList.cs
- SecurityUniqueId.cs
- httpapplicationstate.cs
- FormsIdentity.cs