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
- HwndMouseInputProvider.cs
- XmlSignatureManifest.cs
- peernodeimplementation.cs
- BaseCAMarshaler.cs
- IsolatedStoragePermission.cs
- GeometryHitTestParameters.cs
- AttributeCollection.cs
- PackageDigitalSignature.cs
- StylusOverProperty.cs
- DataGridColumnReorderingEventArgs.cs
- FileStream.cs
- ListViewTableRow.cs
- MatchingStyle.cs
- NotificationContext.cs
- WindowProviderWrapper.cs
- TextTreeRootNode.cs
- GeneratedContractType.cs
- BuildManager.cs
- EntityWrapper.cs
- TreeViewDesigner.cs
- LoginStatusDesigner.cs
- Codec.cs
- OdbcUtils.cs
- GroupBox.cs
- StatusStrip.cs
- DataTemplateSelector.cs
- keycontainerpermission.cs
- EmptyStringExpandableObjectConverter.cs
- InputEventArgs.cs
- CodeSnippetStatement.cs
- AssociationSetMetadata.cs
- ActionFrame.cs
- ReferenceSchema.cs
- BasicBrowserDialog.cs
- LogFlushAsyncResult.cs
- TriggerBase.cs
- WMIGenerator.cs
- ConsoleCancelEventArgs.cs
- ListenerAdaptersInstallComponent.cs
- DataGridCellItemAutomationPeer.cs
- ImageKeyConverter.cs
- WebPartsPersonalization.cs
- Point3DValueSerializer.cs
- LockCookie.cs
- SafeThreadHandle.cs
- XmlReflectionImporter.cs
- XmlStreamStore.cs
- SystemDropShadowChrome.cs
- BaseCollection.cs
- ShaderEffect.cs
- ElementHostPropertyMap.cs
- ProvideValueServiceProvider.cs
- SoapFault.cs
- UnsupportedPolicyOptionsException.cs
- ErrorRuntimeConfig.cs
- StubHelpers.cs
- MethodBuilder.cs
- CodePageUtils.cs
- Int64Converter.cs
- NullableDoubleMinMaxAggregationOperator.cs
- AlternateView.cs
- XdrBuilder.cs
- ClrProviderManifest.cs
- DynamicDataRouteHandler.cs
- HwndProxyElementProvider.cs
- rsa.cs
- HierarchicalDataBoundControlAdapter.cs
- XmlWhitespace.cs
- TextBox.cs
- BorderSidesEditor.cs
- ColumnPropertiesGroup.cs
- AutoGeneratedField.cs
- SQLDouble.cs
- Vector3DCollectionValueSerializer.cs
- RegexParser.cs
- JournalEntryListConverter.cs
- MobileCapabilities.cs
- ActivationArguments.cs
- PipelineModuleStepContainer.cs
- OletxDependentTransaction.cs
- BatchParser.cs
- System.Data.OracleClient_BID.cs
- SequentialOutput.cs
- Geometry3D.cs
- ApplicationGesture.cs
- NonBatchDirectoryCompiler.cs
- SelectionPattern.cs
- Int32Rect.cs
- Ref.cs
- EncryptedXml.cs
- Nullable.cs
- MediaElementAutomationPeer.cs
- StylusPointPropertyInfo.cs
- SwitchAttribute.cs
- sqlpipe.cs
- ObjectTokenCategory.cs
- TimelineCollection.cs
- X509SecurityTokenAuthenticator.cs
- SqlNode.cs
- httpstaticobjectscollection.cs