Sdílet prostřednictvím


MemoryMappedFile Třída

Definice

Představuje soubor mapované paměti.

public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
    interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
Dědičnost
MemoryMappedFile
Implementuje

Příklady

Následující příklad vytvoří zobrazení mapované paměti části extrémně velkého souboru a manipuluje s jeho částí.

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

Poznámky

Soubor mapovaný na paměť mapuje obsah souboru na logický adresní prostor aplikace. Soubory mapované na paměť umožňují programátorům pracovat s extrémně velkými soubory, protože paměť je možné spravovat souběžně a umožňují úplný náhodný přístup k souboru bez nutnosti vyhledávání. Soubory mapované na paměť je také možné sdílet napříč několika procesy.

Metody CreateFromFile vytvoří soubor mapované paměti ze zadané cesty nebo FileStream existujícího souboru na disku. Změny se automaticky rozšíří na disk, když se soubor nenamapuje.

Metody CreateNew vytvoří soubor mapované paměti, který není mapován na existující soubor na disku; a jsou vhodné pro vytvoření sdílené paměti pro komunikaci mezi procesy (IPC).

Soubor mapované paměti může být přidružený k volitelnému názvu, který umožňuje sdílení souboru mapované paměti s jinými procesy.

Můžete vytvořit více zobrazení souboru mapované paměti, včetně zobrazení částí souboru. Stejnou část souboru můžete namapovat na více adres a vytvořit tak souběžnou paměť. Aby dvě zobrazení zůstala souběžná, musí být vytvořena ze stejného souboru mapované paměti. Vytvoření dvou mapování souborů stejného souboru se dvěma zobrazeními neposkytuje souběžnost.

Vlastnosti

SafeMemoryMappedFileHandle

Získá popisovač souboru mapované paměti.

Metody

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

Vytvoří soubor mapované paměti z existujícího souboru se zadaným režimem přístupu, názvem, dědičností a kapacitou.

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

Vytvoří soubor mapované paměti, který má zadaný název, kapacitu, typ přístupu, oprávnění zabezpečení, dědičnost a požadavek na odstranění ze souboru na disku.

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

Vytvoří soubor mapované paměti z existujícího souboru pomocí SafeFileHandle a zadaného režimu přístupu, názvu, dědičnosti a kapacity.

CreateFromFile(String)

Vytvoří soubor mapované paměti ze souboru na disku.

CreateFromFile(String, FileMode)

Vytvoří soubor mapované paměti, který má zadaný režim přístupu ze souboru na disku.

CreateFromFile(String, FileMode, String)

Vytvoří soubor mapované paměti, který má zadaný režim přístupu a název ze souboru na disku.

CreateFromFile(String, FileMode, String, Int64)

Vytvoří soubor mapované paměti, který má zadaný režim přístupu, název a kapacitu ze souboru na disku.

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

Vytvoří soubor mapované paměti, který má zadaný režim přístupu, název, kapacitu a typ přístupu ze souboru na disku.

CreateNew(String, Int64)

Vytvoří soubor mapované paměti, který má zadanou kapacitu v systémové paměti.

CreateNew(String, Int64, MemoryMappedFileAccess)

Vytvoří soubor mapované paměti, který má zadanou kapacitu a typ přístupu v systémové paměti.

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

Vytvoří soubor mapované paměti, který má zadaný název, kapacitu, typ přístupu, možnosti přidělení paměti a dědičnost.

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

Vytvoří soubor mapované paměti, který má zadanou kapacitu, typ přístupu, přidělení paměti, oprávnění zabezpečení a dědičnost v systémové paměti.

CreateOrOpen(String, Int64)

Vytvoří nebo otevře soubor mapované paměti, který má zadaný název a kapacitu v systémové paměti.

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

Vytvoří nebo otevře soubor mapované paměti, který má zadaný název, kapacitu a typ přístupu v systémové paměti.

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

Vytvoří nový prázdný soubor mapované paměti nebo otevře existující soubor mapované paměti, pokud existuje se stejným názvem. Při otevření existujícího souboru se kapacita, možnosti a argumenty paměti ignorují.

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

Vytvoří nebo otevře soubor mapované paměti se zadaným názvem, kapacitou, typem přístupu, přidělením paměti, oprávněními zabezpečení a dědičností v systémové paměti.

CreateViewAccessor()

Vytvoří mapování MemoryMappedViewAccessor na zobrazení souboru mapované paměti.

CreateViewAccessor(Int64, Int64)

Vytvoří, který se MemoryMappedViewAccessor mapuje na zobrazení souboru mapované paměti a který má zadaný posun a velikost.

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

Vytvoří , MemoryMappedViewAccessor který se mapuje na zobrazení souboru mapované paměti a který má zadaný posun, velikost a omezení přístupu.

CreateViewStream()

Vytvoří datový proud, který se mapuje na zobrazení souboru mapované paměti.

CreateViewStream(Int64, Int64)

Vytvoří datový proud, který se mapuje na zobrazení souboru mapované paměti a který má zadaný posun a velikost.

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

Vytvoří datový proud, který se mapuje na zobrazení souboru mapované paměti a který má zadaný posun, velikost a typ přístupu.

Dispose()

Uvolní všechny prostředky používané nástrojem MemoryMappedFile.

Dispose(Boolean)

Uvolní nespravované prostředky používané nástrojem MemoryMappedFile a volitelně uvolní spravované prostředky.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetAccessControl()

Získá řízení přístupu k prostředku souboru mapované paměti.

GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
OpenExisting(String)

Otevře existující soubor mapované paměti, který má zadaný název v systémové paměti.

OpenExisting(String, MemoryMappedFileRights)

Otevře existující soubor mapované paměti, který má zadaný název a přístupová práva v systémové paměti.

OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

Otevře existující soubor mapované paměti, který má zadaný název, přístupová práva a dědičnost v systémové paměti.

SetAccessControl(MemoryMappedFileSecurity)

Nastaví řízení přístupu na prostředek souboru mapované paměti.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro

Viz také