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
- ContainerControl.cs
- UriExt.cs
- DataSourceView.cs
- DataServiceStreamResponse.cs
- DataGridViewCellCancelEventArgs.cs
- SHA1CryptoServiceProvider.cs
- TcpChannelHelper.cs
- Win32PrintDialog.cs
- RegexRunner.cs
- SpellerStatusTable.cs
- CodeNamespaceCollection.cs
- XPathSelectionIterator.cs
- X509Certificate2.cs
- TrustManagerPromptUI.cs
- OptimalBreakSession.cs
- SQLMoney.cs
- InvalidAsynchronousStateException.cs
- FileLogRecord.cs
- DataGridViewRowStateChangedEventArgs.cs
- Canvas.cs
- RTLAwareMessageBox.cs
- Int32Animation.cs
- WebHttpSecurityElement.cs
- Header.cs
- CurrentChangingEventManager.cs
- Material.cs
- ExponentialEase.cs
- ClientScriptManager.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- TextEffect.cs
- EditorZoneBase.cs
- CodeGotoStatement.cs
- documentsequencetextview.cs
- updateconfighost.cs
- BindingSource.cs
- selecteditemcollection.cs
- WebBrowserNavigatedEventHandler.cs
- XmlTypeMapping.cs
- StructuralType.cs
- WbmpConverter.cs
- UnmanagedBitmapWrapper.cs
- DrawingContextDrawingContextWalker.cs
- DataGridViewRowCollection.cs
- DataGridViewComboBoxEditingControl.cs
- ByeMessageCD1.cs
- Positioning.cs
- RuleSettings.cs
- HtmlFormParameterReader.cs
- URIFormatException.cs
- TracingConnectionListener.cs
- XmlHierarchyData.cs
- ShaderEffect.cs
- SchemaSetCompiler.cs
- RtfFormatStack.cs
- ParseChildrenAsPropertiesAttribute.cs
- Formatter.cs
- RewritingValidator.cs
- AuthenticationServiceManager.cs
- CriticalHandle.cs
- FieldToken.cs
- CancelEventArgs.cs
- ConfigXmlElement.cs
- SurrogateSelector.cs
- SynchronizedDispatch.cs
- ExpandCollapseIsCheckedConverter.cs
- DataGridColumnHeader.cs
- LocalBuilder.cs
- EventManager.cs
- ETagAttribute.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- AdobeCFFWrapper.cs
- MostlySingletonList.cs
- PartManifestEntry.cs
- ExternalException.cs
- XPathSelfQuery.cs
- WmlPageAdapter.cs
- InvalidateEvent.cs
- TerminateDesigner.cs
- PixelFormatConverter.cs
- DataMisalignedException.cs
- TableRow.cs
- EditorPart.cs
- EntityProviderFactory.cs
- DesignerCapabilities.cs
- SqlConnectionStringBuilder.cs
- WebPartEditorOkVerb.cs
- EnumerableWrapperWeakToStrong.cs
- SinglePageViewer.cs
- WizardForm.cs
- Types.cs
- WhiteSpaceTrimStringConverter.cs
- VideoDrawing.cs
- ListBox.cs
- TableRowCollection.cs
- BreadCrumbTextConverter.cs
- CodeTypeMember.cs
- TimeIntervalCollection.cs
- ButtonColumn.cs
- EastAsianLunisolarCalendar.cs
- Stacktrace.cs