MemoryMappedFile Klasse

Definition

Stellt eine speicherzuordnunge Datei 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 eine Speicherzuordnungsansicht eines Teils einer extrem großen Datei erstellt und ein Teil davon 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 speicherzuordnunge Datei ordnet den Inhalt einer Datei dem logischen Adressraum einer Anwendung zu. Mit speicherzuordnungen Dateien können Programmierer mit extrem großen Dateien arbeiten, da Arbeitsspeicher gleichzeitig verwaltet werden kann, und sie ermöglichen einen vollständigen, zufälligen Zugriff auf eine Datei, ohne dass sie suchen müssen. Speicherzuordnungsdateien können auch über mehrere Prozesse hinweg freigegeben werden.

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

Die CreateNew Methoden erstellen eine speicherzuordnunge Datei, die keiner vorhandenen Datei auf dem Datenträger zugeordnet ist. Sie eignen sich für die Erstellung gemeinsam genutzter Speicher für die Interprocess-Kommunikation (INTERPROCESS Communication, IPC).

Eine speicherzuordnunge Datei kann einem optionalen Namen zugeordnet werden, mit dem die speicherzuordnunge Datei für andere Prozesse freigegeben werden kann.

Sie können mehrere Ansichten der speicherzuordnungen Datei erstellen, einschließlich Ansichten von Teilen der Datei. Sie können denselben 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 Ansichten bietet keine Parallelität.

Eigenschaften

Name Beschreibung
SafeMemoryMappedFileHandle

Ruft das Dateihandle einer speicherzuordnungen Datei ab.

Methoden

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

Erstellt eine speicherzuordnunge Datei aus einer vorhandenen Datei mit dem angegebenen Zugriffsmodus, Namen, Vererbbarkeit und Kapazität.

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

Erstellt eine speicherzuordnunge Datei mit dem angegebenen Namen, der Kapazität, dem Zugriffstyp, den Sicherheitsberechtigungen, der Vererbbarkeit und der Entsorgungsanforderung einer Datei auf dem Datenträger.

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

Erstellt eine speicherzuordnunge Datei aus einer vorhandenen Datei mithilfe eines SafeFileHandle und des angegebenen Zugriffsmodus, namens, vererbbarkeit und Kapazität.

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

Erstellt eine im Arbeitsspeicher zugeordnete Datei, die den angegebenen Zugriffsmodus, den Namen, die Kapazität und den Zugriffstyp von einer Datei auf dem Datenträger aufweist.

CreateFromFile(String, FileMode, String, Int64)

Erstellt eine speicherzuordnunge Datei, die den angegebenen Zugriffsmodus, den Namen und die Kapazität einer Datei auf dem Datenträger aufweist.

CreateFromFile(String, FileMode, String)

Erstellt eine speicherzuordnunge Datei mit dem angegebenen Zugriffsmodus und Namen aus einer Datei auf dem Datenträger.

CreateFromFile(String, FileMode)

Erstellt eine speicherzuordnunge Datei mit dem angegebenen Zugriffsmodus von einer Datei auf dem Datenträger.

CreateFromFile(String)

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

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

Erstellt eine speicherzuordnungsfähige Datei mit dem angegebenen Namen, der Kapazität, dem Zugriffstyp, den Speicherzuweisungsoptionen und der Vererbung.

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

Erstellt eine speicherzuordnunge Datei, die über die angegebene Kapazität, den Zugriffstyp, die Speicherzuweisung, Sicherheitsberechtigungen und vererbbarkeit im Systemspeicher verfügt.

CreateNew(String, Int64, MemoryMappedFileAccess)

Erstellt eine speicherzuordnunge Datei mit der angegebenen Kapazität und dem angegebenen Zugriffstyp im Systemspeicher.

CreateNew(String, Int64)

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

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

Erstellt eine neue leere zugeordnete Speicherdatei oder öffnet eine vorhandene zugeordnete Speicherdatei, wenn eine datei mit demselben Namen vorhanden ist. Wenn Sie eine vorhandene Datei öffnen, werden die Kapazitäts-, Optionen- und Speicherargumente ignoriert.

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

Erstellt oder öffnet eine im Arbeitsspeicher zugeordnete Datei mit dem angegebenen Namen, der Kapazität, dem Zugriffstyp, der Speicherzuweisung, sicherheitsberechtigungen und der Vererbungsfähigkeit im Systemspeicher.

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

Erstellt oder öffnet eine im Arbeitsspeicher zugeordnete Datei mit dem angegebenen Namen, der Kapazität und dem Zugriffstyp im Systemspeicher.

CreateOrOpen(String, Int64)

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

CreateViewAccessor()

Erstellt eine MemoryMappedViewAccessor Zuordnung zu einer Ansicht der speicherzuordnungen Datei.

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

Erstellt ein MemoryMappedViewAccessor Objekt, das einer Ansicht der speicherzuordnungen Datei zugeordnet ist und über den angegebenen Offset, die Größe und Zugriffsbeschränkungen verfügt.

CreateViewAccessor(Int64, Int64)

Erstellt eine MemoryMappedViewAccessor Zuordnung zu einer Ansicht der speicherzuordnungen Datei, die über den angegebenen Offset und die angegebene Größe verfügt.

CreateViewStream()

Erstellt einen Datenstrom, der einer Ansicht der speicherzuordnungen Datei zugeordnet ist.

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

Erstellt einen Datenstrom, der einer Ansicht der speicherzuordnungen Datei zugeordnet ist und den angegebenen Offset, die Größe und zugriffstyp aufweist.

CreateViewStream(Int64, Int64)

Erstellt einen Datenstrom, der einer Ansicht der speicherzuordnungen Datei zugeordnet ist und über den angegebenen Offset und die angegebene Größe verfügt.

Dispose()

Gibt alle vom MemoryMappedFileverwendeten Ressourcen frei.

Dispose(Boolean)

Gibt die nicht verwalteten Ressourcen frei, die von den MemoryMappedFile verwalteten Ressourcen verwendet werden, und gibt optional die verwalteten Ressourcen frei.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetAccessControl()

Ruft die Zugriffssteuerung für die speicherzuordnunge Dateiressource ab.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

Öffnet eine vorhandene speicherzuordnunge Datei mit dem angegebenen Namen, Zugriffsrechten und vererbbarkeit im Systemspeicher.

OpenExisting(String, MemoryMappedFileRights)

Öffnet eine vorhandene speicherzuordnunge Datei mit dem angegebenen Namen und Zugriffsrechten im Systemspeicher.

OpenExisting(String)

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

SetAccessControl(MemoryMappedFileSecurity)

Legt die Zugriffssteuerung auf die speicherzuordnunge Dateiressource fest.

ToString()

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

(Geerbt von Object)

Gilt für:

Weitere Informationen