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
- SqlFactory.cs
- SqlDependencyListener.cs
- GetResponse.cs
- PathTooLongException.cs
- Speller.cs
- RowToParametersTransformer.cs
- EntityProxyTypeInfo.cs
- OdbcConnectionOpen.cs
- InteropExecutor.cs
- MapPathBasedVirtualPathProvider.cs
- UserValidatedEventArgs.cs
- DataSysAttribute.cs
- DbSetClause.cs
- UserPersonalizationStateInfo.cs
- ItemContainerGenerator.cs
- EntityDataSourceDataSelection.cs
- AutoCompleteStringCollection.cs
- ScopelessEnumAttribute.cs
- WebPartZoneAutoFormat.cs
- MembershipUser.cs
- PropertyDescriptorCollection.cs
- BoundConstants.cs
- SoapReflectionImporter.cs
- ValidationEventArgs.cs
- ToolStripPanelCell.cs
- keycontainerpermission.cs
- ManagedIStream.cs
- Transform.cs
- ModelItem.cs
- URL.cs
- WhiteSpaceTrimStringConverter.cs
- TreeView.cs
- CommandHelpers.cs
- Set.cs
- RegexCompilationInfo.cs
- PageCodeDomTreeGenerator.cs
- TextAnchor.cs
- ShaperBuffers.cs
- UpdatePanelControlTrigger.cs
- KeyTime.cs
- SendReply.cs
- DataGridSortCommandEventArgs.cs
- TriggerAction.cs
- BitmapDecoder.cs
- SetterBase.cs
- SR.cs
- Debug.cs
- XPathQilFactory.cs
- TemplateControl.cs
- StylusOverProperty.cs
- XmlSchemaSimpleContentRestriction.cs
- MethodBuilder.cs
- TextParagraph.cs
- RepeatInfo.cs
- SamlAuthorityBinding.cs
- IsolatedStorageException.cs
- WebPartManager.cs
- ResolveDuplex11AsyncResult.cs
- WrappedReader.cs
- PasswordTextContainer.cs
- MessageQueueInstaller.cs
- DrawingAttributeSerializer.cs
- FormViewDeletedEventArgs.cs
- WebProxyScriptElement.cs
- CodeParameterDeclarationExpression.cs
- SwitchAttribute.cs
- EventHandlersStore.cs
- TabControlAutomationPeer.cs
- InlineCollection.cs
- FlagsAttribute.cs
- ResourceBinder.cs
- PhysicalFontFamily.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- SegmentInfo.cs
- GenericRootAutomationPeer.cs
- DateTimeStorage.cs
- DataSysAttribute.cs
- OleDbReferenceCollection.cs
- SoundPlayer.cs
- CodeStatementCollection.cs
- XmlWrappingWriter.cs
- CannotUnloadAppDomainException.cs
- TraceListeners.cs
- Avt.cs
- ContextCorrelationInitializer.cs
- DynamicValidatorEventArgs.cs
- SwitchLevelAttribute.cs
- AnnotationComponentChooser.cs
- ConfigDefinitionUpdates.cs
- RefreshPropertiesAttribute.cs
- newitemfactory.cs
- BrowserCapabilitiesFactory.cs
- SimpleHandlerBuildProvider.cs
- InputElement.cs
- Buffer.cs
- Collection.cs
- WebPartDescription.cs
- RoleServiceManager.cs
- TextTreeFixupNode.cs
- ValueUnavailableException.cs