Udostępnij za pośrednictwem


MemoryMappedFile Klasa

Definicja

Reprezentuje plik zamapowany na pamięć.

public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
    interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
Dziedziczenie
MemoryMappedFile
Implementuje

Przykłady

Poniższy przykład tworzy mapowany w pamięci widok części bardzo dużego pliku i manipuluje jego częścią.

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

Uwagi

Plik mapowany na pamięć mapuje zawartość pliku na przestrzeń adresową logiczną aplikacji. Pliki mapowane w pamięci umożliwiają programistom pracę z bardzo dużymi plikami, ponieważ pamięć może być zarządzana współbieżnie i umożliwiają pełny, losowy dostęp do pliku bez konieczności wyszukiwania. Pliki mapowane w pamięci mogą być również współużytkowane przez wiele procesów.

Metody CreateFromFile tworzą plik mapowany w pamięci na podstawie określonej ścieżki lub FileStream istniejącego pliku na dysku. Zmiany są automatycznie propagowane na dysk, gdy plik jest niezamapowany.

Metody CreateNew tworzą plik zamapowany na pamięć, który nie jest mapowany na istniejący plik na dysku i są odpowiednie do tworzenia pamięci udostępnionej na potrzeby komunikacji międzyprocesowej (IPC).

Plik mapowany w pamięci może być skojarzony z opcjonalną nazwą, która umożliwia udostępnianie pliku mapowanego w pamięci innym procesom.

Można utworzyć wiele widoków pliku mapowanego w pamięci, w tym widoki części pliku. Możesz zamapować tę samą część pliku na więcej niż jeden adres, aby utworzyć pamięć współbieżną. Aby dwa widoki pozostały współbieżne, należy je utworzyć na podstawie tego samego pliku mapowanego na pamięć. Utworzenie dwóch mapowań plików tego samego pliku z dwoma widokami nie zapewnia współbieżności.

Właściwości

SafeMemoryMappedFileHandle

Pobiera dojście do pliku mapowanego na pamięć.

Metody

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

Tworzy plik mapowany na pamięć na podstawie istniejącego pliku z określonym trybem dostępu, nazwą, dziedziczeniem i pojemnością.

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

Tworzy plik zamapowany na pamięć, który ma określoną nazwę, pojemność, typ dostępu, uprawnienia zabezpieczeń, dziedziczenie i wymaganie usuwania z pliku na dysku.

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

Tworzy plik zamapowany na pamięć na podstawie istniejącego pliku przy użyciu trybu dostępu i określonego SafeFileHandle trybu dostępu, nazwy, dziedziczenia i pojemności.

CreateFromFile(String)

Tworzy plik mapowany na pamięć na podstawie pliku na dysku.

CreateFromFile(String, FileMode)

Tworzy plik mapowany na pamięć, który ma określony tryb dostępu z pliku na dysku.

CreateFromFile(String, FileMode, String)

Tworzy plik mapowany na pamięć, który ma określony tryb dostępu i nazwę z pliku na dysku.

CreateFromFile(String, FileMode, String, Int64)

Tworzy plik zamapowany na pamięć, który ma określony tryb dostępu, nazwę i pojemność z pliku na dysku.

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

Tworzy plik mapowany na pamięć, który ma określony tryb dostępu, nazwę, pojemność i typ dostępu z pliku na dysku.

CreateNew(String, Int64)

Tworzy plik zamapowany na pamięć, który ma określoną pojemność w pamięci systemowej.

CreateNew(String, Int64, MemoryMappedFileAccess)

Tworzy plik zamapowany na pamięć, który ma określoną pojemność i typ dostępu w pamięci systemowej.

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

Tworzy plik mapowany na pamięć, który ma określoną nazwę, pojemność, typ dostępu, opcje alokacji pamięci i możliwość dziedziczenia.

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

Tworzy plik zamapowany na pamięć, który ma określoną pojemność, typ dostępu, alokację pamięci, uprawnienia zabezpieczeń i dziedziczenie w pamięci systemowej.

CreateOrOpen(String, Int64)

Tworzy lub otwiera plik zamapowany na pamięć, który ma określoną nazwę i pojemność w pamięci systemowej.

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

Tworzy lub otwiera plik zamapowany na pamięć, który ma określoną nazwę, pojemność i typ dostępu w pamięci systemowej.

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

Tworzy nowy pusty plik zamapowany na pamięć lub otwiera istniejący plik zamapowany na pamięć, jeśli istnieje o tej samej nazwie. W przypadku otwierania istniejącego pliku argumenty pojemności, opcji i pamięci zostaną zignorowane.

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

Tworzy lub otwiera plik zamapowany na pamięć z określoną nazwą, pojemnością, typem dostępu, alokacją pamięci, uprawnieniami zabezpieczeń i dziedziczeniem w pamięci systemowej.

CreateViewAccessor()

Tworzy obiekt MemoryMappedViewAccessor , który jest mapowany na widok pliku mapowanego na pamięć.

CreateViewAccessor(Int64, Int64)

Tworzy obiekt MemoryMappedViewAccessor , który jest mapowany na widok pliku mapowanego na pamięć i który ma określone przesunięcie i rozmiar.

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

Tworzy obiekt MemoryMappedViewAccessor , który jest mapowany na widok pliku mapowanego na pamięć i ma określone przesunięcie, rozmiar i ograniczenia dostępu.

CreateViewStream()

Tworzy strumień mapowany na widok pliku mapowanego na pamięć.

CreateViewStream(Int64, Int64)

Tworzy strumień, który jest mapowany na widok pliku mapowanego na pamięć i który ma określone przesunięcie i rozmiar.

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

Tworzy strumień, który jest mapowany na widok pliku mapowanego na pamięć i ma określony typ przesunięcia, rozmiaru i dostępu.

Dispose()

Zwalnia wszelkie zasoby używane przez element MemoryMappedFile.

Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element MemoryMappedFile i opcjonalnie zwalnia zasoby zarządzane.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetAccessControl()

Pobiera kontrolę dostępu do zasobu pliku zamapowanego na pamięć.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
OpenExisting(String)

Otwiera istniejący plik zamapowany na pamięć, który ma określoną nazwę w pamięci systemowej.

OpenExisting(String, MemoryMappedFileRights)

Otwiera istniejący plik zamapowany na pamięć, który ma określoną nazwę i prawa dostępu w pamięci systemowej.

OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

Otwiera istniejący plik zamapowany na pamięć, który ma określoną nazwę, prawa dostępu i dziedziczenie w pamięci systemowej.

SetAccessControl(MemoryMappedFileSecurity)

Ustawia kontrolę dostępu do zasobu pliku zamapowanego na pamięć.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też