Export (0) Print
Expand All

MemoryMappedFile Class

Represents a memory-mapped file.

System.Object
  System.IO.MemoryMappedFiles.MemoryMappedFile

Namespace:  System.IO.MemoryMappedFiles
Assembly:  System.Core (in System.Core.dll)

'Declaration
Public Class MemoryMappedFile _
	Implements IDisposable

The MemoryMappedFile type exposes the following members.

  NameDescription
Public propertySafeMemoryMappedFileHandleGets the file handle of a memory-mapped file.
Top

  NameDescription
Public methodStatic memberCreateFromFile(String)Creates a memory-mapped file from a file on disk.
Public methodStatic memberCreateFromFile(String, FileMode)Creates a memory-mapped file that has the specified access mode from a file on disk.
Public methodStatic memberCreateFromFile(String, FileMode, String)Creates a memory-mapped file that has the specified access mode and name from a file on disk.
Public methodStatic memberCreateFromFile(String, FileMode, String, Int64)Creates a memory-mapped file that has the specified access mode, name, and capacity from a file on disk.
Public methodStatic memberCreateFromFile(String, FileMode, String, Int64, MemoryMappedFileAccess)Creates a memory-mapped file that has the specified access mode, name, capacity, and access type from a file on disk.
Public methodStatic memberCreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean)Creates a memory-mapped file from an existing file with the specified access mode, name, inheritability, and capacity.
Public methodStatic memberCreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, MemoryMappedFileSecurity, HandleInheritability, Boolean)Creates a memory-mapped file that has the specified name, capacity, access type, security permissions, inheritability, and disposal requirement from a file on disk.
Public methodStatic memberCreateNew(String, Int64)Creates a memory-mapped file that has the specified capacity in system memory.
Public methodStatic memberCreateNew(String, Int64, MemoryMappedFileAccess)Creates a memory-mapped file that has the specified capacity and access type in system memory.
Public methodStatic memberCreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)Creates a memory-mapped file that has the specified name, capacity, access type, memory allocation options and inheritability.
Public methodStatic memberCreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)Creates a memory-mapped file that has the specified capacity, access type, memory allocation, security permissions, and inheritability in system memory.
Public methodStatic memberCreateOrOpen(String, Int64)Creates or opens a memory-mapped file that has the specified capacity in system memory.
Public methodStatic memberCreateOrOpen(String, Int64, MemoryMappedFileAccess)Creates or opens a memory-mapped file that has the specified capacity and access type in system memory.
Public methodStatic memberCreateOrOpen(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)Creates a new empty memory mapped file or opens an existing memory mapped file if one exists with the same name. If opening an existing file, the capacity, options, and memory arguments will be ignored.
Public methodStatic memberCreateOrOpen(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)Creates or opens a memory-mapped file that has the specified capacity, access type, memory allocation, security permissions, and inheritability in system memory.
Public methodCreateViewAccessorCreates a MemoryMappedViewAccessor that maps to a view of the memory-mapped file.
Public methodCreateViewAccessor(Int64, Int64)Creates a MemoryMappedViewAccessor that maps to a view of the memory-mapped file, and that has the specified offset and size.
Public methodCreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)Creates a MemoryMappedViewAccessor that maps to a view of the memory-mapped file, and that has the specified offset, size, and access restrictions.
Public methodCreateViewStreamCreates a stream that maps to a view of the memory-mapped file.
Public methodCreateViewStream(Int64, Int64)Creates a stream that maps to a view of the memory-mapped file, and that has the specified offset and size.
Public methodCreateViewStream(Int64, Int64, MemoryMappedFileAccess)Creates a stream that maps to a view of the memory-mapped file, and that has the specified offset, size, and access type.
Public methodDisposeReleases all resources used by the MemoryMappedFile.
Protected methodDispose(Boolean)Releases the unmanaged resources used by the MemoryMappedFile and optionally releases the managed resources.
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetAccessControlGets the access control to the memory-mapped file resource.
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodStatic memberOpenExisting(String)Opens an existing memory-mapped file that has the specified name in system memory.
Public methodStatic memberOpenExisting(String, MemoryMappedFileRights)Opens an existing memory-mapped file that has the specified name and access rights in system memory.
Public methodStatic memberOpenExisting(String, MemoryMappedFileRights, HandleInheritability)Opens an existing memory-mapped file that has the specified name, access rights, and inheritability in system memory.
Public methodSetAccessControlSets the access control to the memory-mapped file resource.
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Top

A memory-mapped file maps the contents of a file to an application’s logical address space. Memory-mapped files enable programmers to work with extremely large files because memory can be managed concurrently, and they allow complete, random access to a file without the need for seeking. Memory-mapped files can also be shared across multiple processes.

The CreateFromFile methods create a memory-mapped file from a specified path or a FileStream of an existing file on disk. Changes are automatically propagated to disk when the file is unmapped.

The CreateNew methods create a memory-mapped file that is not mapped to an existing file on disk; and are suitable for creating shared memory for interprocess communication (IPC).

A memory-mapped file is associated with a name.

You can create multiple views of the memory-mapped file, including views of parts of the file. You can map the same part of a file to more than one address to create concurrent memory. For two views to remain concurrent, they have to be created from the same memory-mapped file. Creating two file mappings of the same file with two views does not provide concurrency.

The following example creates a memory-mapped view of a part of an extremely large file and manipulates a portion of it.

Imports System.IO
Imports System.IO.MemoryMappedFiles
Imports System.Runtime.InteropServices

Class Program

    Sub Main()
        Dim offset As Long = &H10000000 ' 256 megabytes
        Dim length As Long = &H20000000 ' 512 megabytes

        ' Create the memory-mapped file. 
        Using mmf = MemoryMappedFile.CreateFromFile("c:\ExtremelyLargeImage.data", FileMode.Open, "ImgA")
            ' Create a random access view, from the 256th megabyte (the offset) 
            ' to the 768th megabyte (the offset plus length). 
            Using accessor = mmf.CreateViewAccessor(offset, length)
                Dim colorSize As Integer = Marshal.SizeOf(GetType(MyColor))
                Dim color As MyColor
                Dim i As Long = 0

                ' Make changes to the view. 
                Do While (i < length)
                    accessor.Read(i, color)
                    color.Brighten(10)
                    accessor.Write(i, color)
                    i += colorSize
                Loop 
            End Using 
        End Using 
    End Sub 
End Class 

Public Structure MyColor
    Public Red As Short 
    Public Green As Short 
	Public Blue As Short 
	Public Alpha As Short 

    ' Make the view brighter. 
	Public Sub Brighten(ByVal value As Short)
        Red = CType(Math.Min(Short.MaxValue, (CType(Red, Integer) + value)), Short)
        Green = CType(Math.Min(Short.MaxValue, (CType(Green, Integer) + value)), Short)
        Blue = CType(Math.Min(Short.MaxValue, (CType(Blue, Integer) + value)), Short)
        Alpha = CType(Math.Min(Short.MaxValue, (CType(Alpha, Integer) + value)), Short)
    End Sub 
End Structure

.NET Framework

Supported in: 4.6, 4.5, 4

.NET Framework Client Profile

Supported in: 4

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2014 Microsoft