Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / IO / MemoryMappedFiles / MemoryMappedViewAccessor.cs / 1305376 / MemoryMappedViewAccessor.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: MemoryMappedViewAccessor ** ** Purpose: View accessor for managed MemoryMappedFiles ** ** Date: February 7, 2007 ** ===========================================================*/ using System; using System.Diagnostics; using System.Security.Permissions; using Microsoft.Win32.SafeHandles; namespace System.IO.MemoryMappedFiles { public sealed class MemoryMappedViewAccessor : UnmanagedMemoryAccessor { private MemoryMappedView m_view; //// [System.Security.SecurityCritical] internal MemoryMappedViewAccessor(MemoryMappedView view) { Debug.Assert(view != null, "view is null"); m_view = view; Initialize(m_view.ViewHandle, m_view.PointerOffset, m_view.Size, MemoryMappedFile.GetFileAccess(m_view.Access)); } public SafeMemoryMappedViewHandle SafeMemoryMappedViewHandle { //// // // // [System.Security.SecurityCritical] [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)] get { return m_view != null ? m_view.ViewHandle : null; } } //// // [System.Security.SecurityCritical] protected override void Dispose(bool disposing) { try { // Explicitly flush the changes. The OS will do this for us anyway, but not until after the // MemoryMappedFile object itself is closed. if (disposing && m_view != null && !m_view.IsClosed) { Flush(); } } finally { try { if (m_view != null) { m_view.Dispose(); } } finally { base.Dispose(disposing); } } } // Flushes the changes such that they are in [....] with the FileStream bits (ones obtained // with the win32 ReadFile and WriteFile functions). Need to call FileStream's Flush to // flush to the disk. // NOTE: This will flush all bytes before and after the view up until an offset that is a // multiple of SystemPageSize. //// // [System.Security.SecurityCritical] public void Flush() { if (!IsOpen) { throw new ObjectDisposedException("MemoryMappedViewAccessor", SR.GetString(SR.ObjectDisposed_ViewAccessorClosed)); } unsafe { if (m_view != null) { m_view.Flush((IntPtr)Capacity); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: MemoryMappedViewAccessor ** ** Purpose: View accessor for managed MemoryMappedFiles ** ** Date: February 7, 2007 ** ===========================================================*/ using System; using System.Diagnostics; using System.Security.Permissions; using Microsoft.Win32.SafeHandles; namespace System.IO.MemoryMappedFiles { public sealed class MemoryMappedViewAccessor : UnmanagedMemoryAccessor { private MemoryMappedView m_view; //// // [System.Security.SecurityCritical] internal MemoryMappedViewAccessor(MemoryMappedView view) { Debug.Assert(view != null, "view is null"); m_view = view; Initialize(m_view.ViewHandle, m_view.PointerOffset, m_view.Size, MemoryMappedFile.GetFileAccess(m_view.Access)); } public SafeMemoryMappedViewHandle SafeMemoryMappedViewHandle { //// // // // [System.Security.SecurityCritical] [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)] get { return m_view != null ? m_view.ViewHandle : null; } } //// // [System.Security.SecurityCritical] protected override void Dispose(bool disposing) { try { // Explicitly flush the changes. The OS will do this for us anyway, but not until after the // MemoryMappedFile object itself is closed. if (disposing && m_view != null && !m_view.IsClosed) { Flush(); } } finally { try { if (m_view != null) { m_view.Dispose(); } } finally { base.Dispose(disposing); } } } // Flushes the changes such that they are in [....] with the FileStream bits (ones obtained // with the win32 ReadFile and WriteFile functions). Need to call FileStream's Flush to // flush to the disk. // NOTE: This will flush all bytes before and after the view up until an offset that is a // multiple of SystemPageSize. //// // [System.Security.SecurityCritical] public void Flush() { if (!IsOpen) { throw new ObjectDisposedException("MemoryMappedViewAccessor", SR.GetString(SR.ObjectDisposed_ViewAccessorClosed)); } unsafe { if (m_view != null) { m_view.Flush((IntPtr)Capacity); } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.//
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SingleTagSectionHandler.cs
- SqlProvider.cs
- ErrorWebPart.cs
- HostingEnvironmentException.cs
- DesignTable.cs
- SafePEFileHandle.cs
- UnhandledExceptionEventArgs.cs
- ConfigurationLocationCollection.cs
- ControlTemplate.cs
- Logging.cs
- CapabilitiesSection.cs
- ReadOnlyAttribute.cs
- SizeChangedInfo.cs
- hresults.cs
- ClosableStream.cs
- OledbConnectionStringbuilder.cs
- HierarchicalDataSourceControl.cs
- EntityViewGenerator.cs
- X509WindowsSecurityToken.cs
- SqlNotificationEventArgs.cs
- RtType.cs
- ToolStripRendererSwitcher.cs
- RuntimeEnvironment.cs
- ErrorHandler.cs
- ControlAdapter.cs
- UITypeEditors.cs
- ExpressionBindings.cs
- Emitter.cs
- TraceUtils.cs
- LicenseContext.cs
- Codec.cs
- HwndStylusInputProvider.cs
- ObjectMaterializedEventArgs.cs
- AccessText.cs
- XmlHierarchicalEnumerable.cs
- BulletDecorator.cs
- PersonalizationAdministration.cs
- Point4D.cs
- DataGridItemEventArgs.cs
- ConstantExpression.cs
- DoubleAnimationBase.cs
- ListViewItem.cs
- SvcMapFileLoader.cs
- MatrixAnimationUsingPath.cs
- MDIClient.cs
- RIPEMD160Managed.cs
- HttpModuleCollection.cs
- XmlILConstructAnalyzer.cs
- LinearGradientBrush.cs
- EpmSyndicationContentSerializer.cs
- GroupByExpressionRewriter.cs
- TextTreeExtractElementUndoUnit.cs
- AttributeQuery.cs
- HtmlTitle.cs
- BindingValueChangedEventArgs.cs
- MatrixAnimationUsingKeyFrames.cs
- CompositeTypefaceMetrics.cs
- PropertyStore.cs
- SafeReadContext.cs
- DataIdProcessor.cs
- SapiRecognizer.cs
- ScalarOps.cs
- StaticContext.cs
- ResourceProviderFactory.cs
- CssTextWriter.cs
- ToolStripDropTargetManager.cs
- _emptywebproxy.cs
- BufferModeSettings.cs
- BitStream.cs
- Properties.cs
- NewArray.cs
- WindowsAltTab.cs
- EventsTab.cs
- TypedDataSetSchemaImporterExtension.cs
- Environment.cs
- XmlDocumentViewSchema.cs
- IIS7WorkerRequest.cs
- SafeNativeMethods.cs
- SpnEndpointIdentityExtension.cs
- SourceSwitch.cs
- DataSourceControl.cs
- PositiveTimeSpanValidator.cs
- DispatchChannelSink.cs
- SmtpFailedRecipientsException.cs
- CodeArrayIndexerExpression.cs
- ItemContainerProviderWrapper.cs
- Model3DGroup.cs
- WindowsToolbar.cs
- TriggerCollection.cs
- ParserStreamGeometryContext.cs
- RegistrySecurity.cs
- OLEDB_Enum.cs
- CompilerScopeManager.cs
- ViewSimplifier.cs
- RewritingPass.cs
- DbProviderConfigurationHandler.cs
- TimeoutStream.cs
- ObjectDataSourceMethodEventArgs.cs
- ActiveXHelper.cs
- PersonalizationProvider.cs