Freigeben über


MemoryMappedFile Klasse

Definition

Stellt eine Speicherabbilddatei dar.

public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
    interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
Vererbung
MemoryMappedFile
Implementiert

Beispiele

Im folgenden Beispiel wird ein Speicherabbild für einen Teil einer sehr großen Datei erstellt und teilweise bearbeitet.

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

class Program
{
    static void Main(string[] args)
    {
        long offset = 0x10000000; // 256 megabytes
        long length = 0x20000000; // 512 megabytes

        // Create the memory-mapped file.
        using (var 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 (var accessor = mmf.CreateViewAccessor(offset, length))
            {
                int colorSize = Marshal.SizeOf(typeof(MyColor));
                MyColor color;

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

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

    // Make the view brighter.
    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.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

Hinweise

Eine speicherabbildete Datei ordnet den Inhalt einer Datei dem logischen Adressraum einer Anwendung zu. Im Arbeitsspeicher zugeordnete Dateien ermöglichen Programmierern, mit extrem großen Dateien zu arbeiten, da arbeitsspeicher gleichzeitig verwaltet werden kann und sie einen vollständigen, zufälligen Zugriff auf eine Datei ermöglichen, ohne dass gesucht werden muss. Im Speicher zugeordnete Dateien können auch über mehrere Prozesse hinweg gemeinsam genutzt werden.

Die CreateFromFile Methoden erstellen eine Speicherabbilddatei aus einem angegebenen Pfad oder ein FileStream einer vorhandenen Datei auf dem Datenträger. Änderungen werden automatisch auf den Datenträger weitergegeben, wenn die Datei nicht zugeordnet ist.

Die CreateNew Methoden erstellen eine speicherabbildete Datei, die keiner vorhandenen Datei auf dem Datenträger zugeordnet ist und zum Erstellen von freigegebenem Arbeitsspeicher für die prozessübergreifende Kommunikation (INTERProcess Communication, IPC) geeignet ist.

Eine im Speicher zugeordnete Datei kann einem optionalen Namen zugeordnet werden, der es ermöglicht, dass die im Speicher zugeordnete Datei für andere Prozesse freigegeben werden kann.

Sie können mehrere Ansichten der im Speicher zugeordneten Datei erstellen, einschließlich Ansichten von Teilen der Datei. Sie können den gleichen Teil einer Datei mehreren Adressen zuordnen, um gleichzeitigen Arbeitsspeicher zu erstellen. Parallele Ansichten müssen aus der gleichen Speicherabbilddatei erstellt werden. Das Erstellen von zwei Dateizuordnungen derselben Datei mit zwei Sichten bietet keine Parallelität.

Eigenschaften

SafeMemoryMappedFileHandle

Ruft das Dateihandle einer Speicherabbilddatei ab.

Methoden

CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean)

Erstellt eine im Speicher abgebildete Datei aus einer vorhandenen Datei mit dem angegebenen Zugriffsmodus, den angegebenen Namen, der angegebenen Vererbbarkeit und Kapazität.

CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, MemoryMappedFileSecurity, HandleInheritability, Boolean)

Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Name, Kapazität, Zugriffstyp, Sicherheitsberechtigungen, Vererbbarkeit und Freigabeanforderung aus einer Datei auf dem Datenträger.

CreateFromFile(SafeFileHandle, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean)

Erstellt eine im Speicher zugeordnete Datei aus einer vorhandenen Datei mit einem SafeFileHandle und dem angegebenen Zugriffsmodus, dem angegebenen Namen, der Vererbbarkeit und der angegebenen Kapazität.

CreateFromFile(String)

Erstellt eine Speicherabbilddatei aus einer Datei auf dem Datenträger.

CreateFromFile(String, FileMode)

Erstellt eine im Speicher abgebildete Datei mit dem angegebenen Zugriffsmodus aus einer Datei auf dem Datenträger.

CreateFromFile(String, FileMode, String)

Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Zugriffsmodus und Name aus einer Datei auf dem Datenträger.

CreateFromFile(String, FileMode, String, Int64)

Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Zugriffsmodus, Name und Kapazität aus einer Datei auf dem Datenträger.

CreateFromFile(String, FileMode, String, Int64, MemoryMappedFileAccess)

Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Zugriffsmodus, Name, Kapazität und Zugriffstyp aus einer Datei auf dem Datenträger.

CreateNew(String, Int64)

Erstellt eine im Speicher abgebildete Datei mit der angegebenen Kapazität im Systemspeicher.

CreateNew(String, Int64, MemoryMappedFileAccess)

Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Kapazität und Zugriffstyp im Systemspeicher.

CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)

Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Name, Kapazität, Zugriffstyp, Speicherbelegung und Vererbbarkeit.

CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)

Erstellt eine im Speicher abgebildete Datei mit den angegebenen Werten für Kapazität, Zugriffstyp, Speicherbelegung, Sicherheitsberechtigungen und Vererbbarkeit im Systemspeicher.

CreateOrOpen(String, Int64)

Erstellt oder öffnet eine im Speicher abgebildete Datei mit dem angegebenen Namen und der angegebenen Kapazität im Systemspeicher.

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

Erstellt oder öffnet eine im Speicher abgebildete Datei mit den angegebenen Werten für Name, Kapazität und Zugriffstyp im Systemspeicher.

CreateOrOpen(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability)

Erstellt eine neue leere im Speicher abgebildete Datei oder öffnet eine vorhandene im Speicher abgebildete Datei, wenn eine Datei mit diesem Namen existiert. Wenn Sie eine vorhandene Datei angeben, werden die Werte für Kapazität, Optionen und Speicherargumente ignoriert.

CreateOrOpen(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability)

Erstellt oder öffnet eine im Speicher abgebildete Datei mit den angegebenen Werten für Kapazität, Zugriffstyp, Speicherbelegung, Sicherheitsberechtigungen und Vererbbarkeit im Systemspeicher.

CreateViewAccessor()

Erstellt einen MemoryMappedViewAccessor, der einer Ansicht der Speicherabbilddatei zugeordnet ist.

CreateViewAccessor(Int64, Int64)

Erstellt ein MemoryMappedViewAccessor, das einer Ansicht der im Speicher abgebildeten Datei zugeordnet ist und über die angegebenen Werte für Offset und Größe verfügt.

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

Erstellt ein MemoryMappedViewAccessor, das einer Ansicht der im Speicher abgebildeten Datei zugeordnet ist und über die angegebenen Werte für Offset, Größe und Zugriffseinschränkungen verfügt.

CreateViewStream()

Erstellt einen Stream, der einer Ansicht der Speicherabbilddatei zugeordnet ist.

CreateViewStream(Int64, Int64)

Erstellt einen Datenstrom, der einer Ansicht der im Speicher abgebildeten Datei zugeordnet ist und über die angegebenen Werte für Offset und Größe verfügt.

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

Erstellt einen Datenstrom, der einer Ansicht der im Speicher abgebildeten Datei zugeordnet ist und über die angegebenen Werte für Offset, Größe und Zugriffstyp verfügt.

Dispose()

Gibt alle vom MemoryMappedFile verwendeten Ressourcen frei.

Dispose(Boolean)

Gibt die von MemoryMappedFile verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetAccessControl()

Ruft die Zugriffssteuerung für die Ressource der Speicherabbilddatei ab.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
OpenExisting(String)

Öffnet eine vorhandene im Speicher abgebildete Datei mit dem angegebenen Namen im Systemspeicher.

OpenExisting(String, MemoryMappedFileRights)

Öffnet eine vorhandene im Speicher abgebildete Datei mit den angegebenen Werten für Name und Zugriffsrechte im Systemspeicher.

OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

Öffnet eine vorhandene im Speicher abgebildete Datei mit den angegebenen Werten für Name, Zugriffsrechte und Vererbbarkeit im Systemspeicher.

SetAccessControl(MemoryMappedFileSecurity)

Legt die Zugriffssteuerung für die Ressource der Speicherabbilddatei fest.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Gilt für:

Weitere Informationen