MemoryMappedFile.OpenExisting Method

Definition

Overloads

OpenExisting(String)

Opens an existing memory-mapped file that has the specified name in system memory.

OpenExisting(String, MemoryMappedFileRights)

Opens an existing memory-mapped file that has the specified name and access rights in system memory.

OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

Opens an existing memory-mapped file that has the specified name, access rights, and inheritability in system memory.

OpenExisting(String)

Opens an existing memory-mapped file that has the specified name in system memory.

public static System.IO.MemoryMappedFiles.MemoryMappedFile OpenExisting (string mapName);
Parameters
mapName
String

The name of the memory-mapped file to open.

Returns

A memory-mapped file that has the specified name.

Exceptions

mapName is an empty string.

mapName is null.

The file specified for mapName does not exist.

Examples

Opening a Persisted Memory-Mapped File

The following example opens a memory-mapped file named ImgA that has already been created from a file on disk (as shown in the example for the CreateFromFile(String) method).

using System;
using System.IO.MemoryMappedFiles;
using System.Runtime.InteropServices;


class Program
{
    static void Main(string[] args)
    {
        // Assumes another process has created the memory-mapped file.
        using (var mmf = MemoryMappedFile.OpenExisting("ImgA"))
        {
            using (var accessor = mmf.CreateViewAccessor(4000000, 2000000))
            {
                int colorSize = Marshal.SizeOf(typeof(MyColor));
                MyColor color;

                // Make changes to the view.
                for (long i = 0; i < 1500000; i += colorSize)
                {
                    accessor.Read(i, out color);
                    color.Brighten(20);
                    accessor.Write(i, ref color);
                }
            }
        }
    }
}

public struct MyColor
{
    public short Red;
    public short Green;
    public short Blue;
    public short Alpha;

    // Make the view brigher.
    public void Brighten(short value)
    {
        Red = (short)Math.Min(short.MaxValue, (int)Red + value);
        Green = (short)Math.Min(short.MaxValue, (int)Green + value);
        Blue = (short)Math.Min(short.MaxValue, (int)Blue + value);
        Alpha = (short)Math.Min(short.MaxValue, (int)Alpha + value);
    }
}
Imports System
Imports System.IO.MemoryMappedFiles
Imports System.Runtime.InteropServices

Class Program
    Public Shared Sub Main(ByVal args As String())
        ' Assumes another process has created the memory-mapped file.
        Using mmf = MemoryMappedFile.OpenExisting("ImgA")
            Using accessor = mmf.CreateViewAccessor(4000000, 2000000)
                Dim colorSize As Integer = Marshal.SizeOf(GetType(MyColor))
                Dim color As MyColor

                ' Make changes to the view.
                Dim i As Long = 0
                While i < 1500000
                    accessor.Read(i, color)
                    color.Brighten(30)
                    accessor.Write(i, color)
                    i += colorSize
                End While
            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 brigher.
    Public Sub Brighten(ByVal value As Short)
        Red = CShort(Math.Min(Short.MaxValue, CInt(Red) + value))
        Green = CShort(Math.Min(Short.MaxValue, CInt(Green) + value))
        Blue = CShort(Math.Min(Short.MaxValue, CInt(Blue) + value))
        Alpha = CShort(Math.Min(Short.MaxValue, CInt(Alpha) + value))
    End Sub
End Structure

Opening a Non-Persisted Memory-Mapped File

The following example opens a memory-mapped file used for inter-process communication. This code example is part of a larger example provided for the CreateNew(String, Int64) method.

Remarks

The memory-mapped file can be either a persisted memory-mapped file (associated with a file on disk) or non persisted.

OpenExisting(String, MemoryMappedFileRights)

Opens an existing memory-mapped file that has the specified name and access rights in system memory.

public static System.IO.MemoryMappedFiles.MemoryMappedFile OpenExisting (string mapName, System.IO.MemoryMappedFiles.MemoryMappedFileRights desiredAccessRights);
Parameters
mapName
String

The name of the memory-mapped file to open.

desiredAccessRights
MemoryMappedFileRights

One of the enumeration values that specifies the access rights to apply to the memory-mapped file.

Returns

A memory-mapped file that has the specified characteristics.

Exceptions

mapName is an empty string.

mapName is null.

desiredAccessRights is not a valid MemoryMappedFileRights enumeration value.

The file specified for mapName does not exist.

OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

Opens an existing memory-mapped file that has the specified name, access rights, and inheritability in system memory.

public static System.IO.MemoryMappedFiles.MemoryMappedFile OpenExisting (string mapName, System.IO.MemoryMappedFiles.MemoryMappedFileRights desiredAccessRights, System.IO.HandleInheritability inheritability);
Parameters
mapName
String

The name of the memory-mapped file to open.

desiredAccessRights
MemoryMappedFileRights

One of the enumeration values that specifies the access rights to apply to the memory-mapped file.

inheritability
HandleInheritability

One of the enumeration values that specifies whether a handle to the memory-mapped file can be inherited by a child process. The default is None.

Returns

A memory-mapped file that has the specified characteristics.

Exceptions

mapName is an empty string.

mapName is null.

desiredAccessRights is not a valid MemoryMappedFileRights enumeration value.

-or-

inheritability is not a valid HandleInheritability enumeration value.

The requested access is invalid for the memory-mapped file.

The file specified for mapName does not exist.