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
- FixedFlowMap.cs
- TCPListener.cs
- HttpListenerException.cs
- FlowDocumentView.cs
- FileAuthorizationModule.cs
- ConstrainedDataObject.cs
- HttpCapabilitiesBase.cs
- SymLanguageVendor.cs
- DefaultBindingPropertyAttribute.cs
- DataGridViewDataConnection.cs
- SqlConnection.cs
- DataGridViewBand.cs
- ImageField.cs
- TriggerActionCollection.cs
- Socket.cs
- ConnectionPointGlyph.cs
- ListBox.cs
- KeyGesture.cs
- SqlDataSourceCommandEventArgs.cs
- FormViewUpdatedEventArgs.cs
- DuplexSecurityProtocolFactory.cs
- Object.cs
- EntityDesignerUtils.cs
- MediaPlayer.cs
- RbTree.cs
- HandlerBase.cs
- QuadraticBezierSegment.cs
- DataGridViewTextBoxColumn.cs
- TakeQueryOptionExpression.cs
- XmlTextWriter.cs
- ByteKeyFrameCollection.cs
- AssemblyBuilder.cs
- CrossContextChannel.cs
- EncryptedKey.cs
- EncryptedData.cs
- DelegateBodyWriter.cs
- TableItemProviderWrapper.cs
- AutomationEventArgs.cs
- ExtendedProtectionPolicyTypeConverter.cs
- LoginDesignerUtil.cs
- SamlSecurityTokenAuthenticator.cs
- CodeTypeReferenceExpression.cs
- Synchronization.cs
- SafeArrayTypeMismatchException.cs
- DBConnection.cs
- Pair.cs
- DbConnectionPoolIdentity.cs
- SecureUICommand.cs
- ComboBoxDesigner.cs
- RequestCachingSection.cs
- WhitespaceRule.cs
- TableFieldsEditor.cs
- DetailsViewDeleteEventArgs.cs
- DocumentSchemaValidator.cs
- SqlDataSourceEnumerator.cs
- PrintPreviewControl.cs
- SizeAnimationUsingKeyFrames.cs
- DecoderExceptionFallback.cs
- SafeNativeMethods.cs
- XamlParser.cs
- CommonXSendMessage.cs
- XmlSchemaSimpleTypeList.cs
- ConnectionPointGlyph.cs
- TextParaLineResult.cs
- XmlSchemaSimpleType.cs
- CssClassPropertyAttribute.cs
- DropTarget.cs
- ContextStaticAttribute.cs
- ButtonBaseAdapter.cs
- TypeDescriptorContext.cs
- UnsafeNativeMethods.cs
- HttpWriter.cs
- BitmapMetadataBlob.cs
- CaseInsensitiveHashCodeProvider.cs
- MasterPage.cs
- SQLByteStorage.cs
- ImageIndexConverter.cs
- PrintDocument.cs
- InfoCardCryptoHelper.cs
- ProcessInputEventArgs.cs
- UnsignedPublishLicense.cs
- XmlNodeReader.cs
- NotSupportedException.cs
- Inline.cs
- UnknownBitmapEncoder.cs
- TypeLibConverter.cs
- ErrorHandler.cs
- XmlDataImplementation.cs
- HtmlSelect.cs
- StorageEntitySetMapping.cs
- QilName.cs
- TraceFilter.cs
- EntityExpressionVisitor.cs
- Viewport3DAutomationPeer.cs
- ServiceParser.cs
- InstalledFontCollection.cs
- ServiceContractGenerationContext.cs
- WebReferenceCollection.cs
- CodeAttributeDeclarationCollection.cs
- TextBox.cs