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
- ISAPIWorkerRequest.cs
- BinaryNode.cs
- RowCache.cs
- BrowserCapabilitiesCodeGenerator.cs
- PageCatalogPartDesigner.cs
- CollectionChange.cs
- XPathBinder.cs
- BinaryObjectInfo.cs
- UiaCoreApi.cs
- SqlServices.cs
- BindingNavigator.cs
- ResourceContainer.cs
- EditorPartCollection.cs
- CapabilitiesRule.cs
- InvalidComObjectException.cs
- FillBehavior.cs
- IsolatedStorage.cs
- TimelineGroup.cs
- HttpDictionary.cs
- ThumbButtonInfo.cs
- GenericTypeParameterBuilder.cs
- CFStream.cs
- Timer.cs
- TrustLevelCollection.cs
- TreeNode.cs
- TrackingMemoryStream.cs
- FixedDocumentSequencePaginator.cs
- ScriptIgnoreAttribute.cs
- DataPagerFieldItem.cs
- SequentialOutput.cs
- DbConnectionPoolCounters.cs
- GridViewColumnHeader.cs
- RuleAction.cs
- CultureInfo.cs
- AdRotator.cs
- ServiceSecurityAuditElement.cs
- LinkedList.cs
- Rect3D.cs
- MexNamedPipeBindingCollectionElement.cs
- Utils.cs
- TextEditorParagraphs.cs
- CollectionDataContract.cs
- WeakReadOnlyCollection.cs
- HtmlFormParameterReader.cs
- SEHException.cs
- DataTableCollection.cs
- CellQuery.cs
- SelectionManager.cs
- TableLayoutRowStyleCollection.cs
- SpeakInfo.cs
- WebBrowserBase.cs
- base64Transforms.cs
- DataObjectPastingEventArgs.cs
- IpcClientChannel.cs
- CompressionTransform.cs
- RightsManagementLicense.cs
- DataListItemCollection.cs
- FontWeightConverter.cs
- TypeListConverter.cs
- FontFaceLayoutInfo.cs
- Mutex.cs
- ProcessHostServerConfig.cs
- XamlTemplateSerializer.cs
- UnSafeCharBuffer.cs
- AdornerHitTestResult.cs
- ExecutorLocksHeldException.cs
- EditingMode.cs
- ColorConverter.cs
- MsmqIntegrationInputChannel.cs
- RsaSecurityTokenAuthenticator.cs
- SqlGenericUtil.cs
- ParallelForEach.cs
- RepeaterCommandEventArgs.cs
- XmlUTF8TextWriter.cs
- CompiledQuery.cs
- TriggerAction.cs
- DataGridViewTextBoxCell.cs
- VisualBasicValue.cs
- LinqDataSourceDeleteEventArgs.cs
- StandardTransformFactory.cs
- EventLogConfiguration.cs
- SettingsBindableAttribute.cs
- SchemaMapping.cs
- AQNBuilder.cs
- LogLogRecordHeader.cs
- SelectionListDesigner.cs
- ServiceEndpointElement.cs
- FormClosedEvent.cs
- LogLogRecord.cs
- DataBindingHandlerAttribute.cs
- RSAPKCS1KeyExchangeFormatter.cs
- ChangeBlockUndoRecord.cs
- OdbcConnection.cs
- RoutedEventValueSerializer.cs
- Size3DValueSerializer.cs
- EntityProviderFactory.cs
- ConnectionProviderAttribute.cs
- DataGridViewHitTestInfo.cs
- ThicknessAnimationUsingKeyFrames.cs
- ConfigurationValue.cs