MemoryMappedFile Klas

Definitie

Vertegenwoordigt een geheugentoewijzingsbestand.

public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
    interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
Overname
MemoryMappedFile
Implementeringen

Voorbeelden

In het volgende voorbeeld wordt een geheugenweergave gemaakt van een deel van een zeer groot bestand en wordt een deel ervan bewerkt.

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

Opmerkingen

Een geheugentoewijzingsbestand wijst de inhoud van een bestand toe aan de logische adresruimte van een toepassing. Met geheugen toegewezen bestanden kunnen programmeurs met extreem grote bestanden werken, omdat het geheugen gelijktijdig kan worden beheerd en ze volledige, willekeurige toegang tot een bestand toestaan zonder dat ze op zoek hoeven te zijn. Geheugen toegewezen bestanden kunnen ook worden gedeeld over meerdere processen.

De CreateFromFile methoden maken een geheugentoewijzingsbestand op basis van een opgegeven pad of een FileStream bestaand bestand op schijf. Wijzigingen worden automatisch doorgegeven aan de schijf wanneer het bestand niet is toegewezen.

De CreateNew methoden maken een geheugentoewijzingsbestand dat niet is toegewezen aan een bestaand bestand op schijf en zijn geschikt voor het maken van gedeeld geheugen voor IPC (Interprocess Communication).

Een geheugentoewijzingsbestand kan worden gekoppeld aan een optionele naam waarmee het geheugentoewijzingsbestand kan worden gedeeld met andere processen.

U kunt meerdere weergaven van het geheugentoewijzingsbestand maken, inclusief weergaven van delen van het bestand. U kunt hetzelfde deel van een bestand toewijzen aan meer dan één adres om gelijktijdig geheugen te maken. Om twee weergaven gelijktijdig te houden, moeten ze gebaseerd zijn op hetzelfde geheugen-gehecht bestand. Het maken van twee bestandstoewijzingen van hetzelfde bestand met twee weergaven biedt geen gelijktijdigheid.

Eigenschappen

Name Description
SafeMemoryMappedFileHandle

Hiermee haalt u de bestandsgreep van een geheugentoewijzingsbestand op.

Methoden

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

Hiermee maakt u een geheugentoewijzingsbestand op basis van een bestaand bestand met de opgegeven toegangsmodus, naam, overname en capaciteit.

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

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven naam, capaciteit, toegangstype, beveiligingsmachtigingen, overname- en verwijderingsvereiste van een bestand op schijf.

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

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven toegangsmodus, naam, capaciteit en toegangstype van een bestand op schijf.

CreateFromFile(String, FileMode, String, Int64)

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven toegangsmodus, naam en capaciteit van een bestand op schijf.

CreateFromFile(String, FileMode, String)

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven toegangsmodus en naam van een bestand op schijf.

CreateFromFile(String, FileMode)

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven toegangsmodus van een bestand op schijf.

CreateFromFile(String)

Hiermee maakt u een geheugentoewijzingsbestand op basis van een bestand op schijf.

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

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven naam, capaciteit, toegangstype, opties voor geheugentoewijzing en overdraagbaarheid.

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

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven capaciteit, toegangstype, geheugentoewijzing, beveiligingsmachtigingen en overnamemogelijkheden in het systeemgeheugen.

CreateNew(String, Int64, MemoryMappedFileAccess)

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven capaciteit en het toegangstype in het systeemgeheugen.

CreateNew(String, Int64)

Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven capaciteit in het systeemgeheugen.

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

Hiermee maakt u een nieuw leeg geheugen toegewezen bestand of opent u een bestaand geheugen toegewezen bestand als er een bestaat met dezelfde naam. Als u een bestaand bestand opent, worden de capaciteit, opties en geheugenargumenten genegeerd.

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

Hiermee maakt of opent u een geheugentoewijzingsbestand met de opgegeven naam, capaciteit, toegangstype, geheugentoewijzing, beveiligingsmachtigingen en overnamemogelijkheden in het systeemgeheugen.

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

Hiermee maakt of opent u een geheugentoewijzingsbestand met de opgegeven naam, capaciteit en toegangstype in het systeemgeheugen.

CreateOrOpen(String, Int64)

Hiermee maakt of opent u een geheugentoewijzingsbestand met de opgegeven naam en capaciteit in het systeemgeheugen.

CreateViewAccessor()

Hiermee maakt u een MemoryMappedViewAccessor bestand dat is toegewezen aan een weergave van het geheugentoewijzingsbestand.

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

Hiermee maakt u een MemoryMappedViewAccessor weergave van het geheugentoewijzingsbestand en met de opgegeven offset, grootte en toegangsbeperkingen.

CreateViewAccessor(Int64, Int64)

Hiermee maakt u een MemoryMappedViewAccessor weergave van het geheugentoewijzingsbestand en met de opgegeven offset en grootte.

CreateViewStream()

Hiermee maakt u een stream die wordt toegewezen aan een weergave van het geheugentoewijzingsbestand.

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

Hiermee maakt u een stroom die wordt toegewezen aan een weergave van het geheugentoewijzingsbestand en dat de opgegeven offset, grootte en toegangstype heeft.

CreateViewStream(Int64, Int64)

Hiermee maakt u een stream die wordt toegewezen aan een weergave van het geheugentoewijzingsbestand en die de opgegeven offset en grootte heeft.

Dispose()

Alle resources die worden gebruikt door de MemoryMappedFile.

Dispose(Boolean)

Publiceert de niet-beheerde resources die worden gebruikt door de MemoryMappedFile beheerde resources en brengt eventueel de beheerde resources vrij.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetAccessControl()

Hiermee haalt u het toegangsbeheer op voor de bestandsresource die is toegewezen aan het geheugen.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

Hiermee opent u een bestaand geheugentoewijzingsbestand met de opgegeven naam, toegangsrechten en overnamemogelijkheden in het systeemgeheugen.

OpenExisting(String, MemoryMappedFileRights)

Hiermee opent u een bestaand geheugentoewijzingsbestand met de opgegeven naam en toegangsrechten in het systeemgeheugen.

OpenExisting(String)

Hiermee opent u een bestaand geheugentoewijzingsbestand met de opgegeven naam in het systeemgeheugen.

SetAccessControl(MemoryMappedFileSecurity)

Hiermee stelt u het toegangsbeheer in op de bron van het geheugentoewijzingsbestand.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Van toepassing op

Zie ook