MemoryMappedFile Класс

Определение

Представляет сопоставленный с памятью файл.

public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
    interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
Наследование
MemoryMappedFile
Реализации

Примеры

В следующем примере создается представление части чрезвычайно большого файла, сопоставленное с памятью, и изменяется часть этого представления.

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

Комментарии

Сопоставленный с памятью файл сопоставляет содержимое файла с логическим адресным пространством приложения. Сопоставленные с памятью файлы позволяют программистам работать с чрезвычайно большими файлами, так как память может управляться одновременно, и они позволяют выполнять полный случайный доступ к файлу без необходимости искать. Файлы, сопоставленные с памятью, также можно совместно использовать в нескольких процессах.

Методы CreateFromFile создают сопоставленный с памятью файл из указанного пути или FileStream существующего файла на диске. Изменения автоматически распространяются на диск при отмене сопоставления файла.

Методы CreateNew создают сопоставленный с памятью файл, который не сопоставляется с существующим файлом на диске; и подходят для создания общей памяти для межпроцессного взаимодействия (IPC).

Сопоставленный с памятью файл может быть связан с необязательным именем, что позволяет совместно использовать сопоставленный с памятью файл с другими процессами.

Можно создать несколько представлений сопоставленного с памятью файла, включая представления частей файла. Вы можете сопоставить одну часть файла с несколькими адресами для создания параллельной памяти. Чтобы два представления оставались одновременными, их необходимо создать из одного файла с отображением в память. Создание двух сопоставлений файлов одного файла с двумя представлениями не обеспечивает параллелизм.

Свойства

Имя Описание
SafeMemoryMappedFileHandle

Возвращает дескриптор файла, сопоставленного с памятью.

Методы

Имя Описание
CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean)

Создает сопоставленный с памятью файл из существующего файла с указанным режимом доступа, именем, наследованием и емкостью.

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

Создает сопоставленный с памятью файл с указанным именем, емкостью, типом доступа, разрешениями безопасности, наследованием и требованием к удалению из файла на диске.

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

Создает сопоставленный с памятью файл из существующего файла с помощью SafeFileHandle указанного режима доступа, имени, наследимости и емкости.

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

Создает сопоставленный с памятью файл с указанным режимом доступа, именем, емкостью и типом доступа из файла на диске.

CreateFromFile(String, FileMode, String, Int64)

Создает сопоставленный с памятью файл с указанным режимом доступа, именем и емкостью из файла на диске.

CreateFromFile(String, FileMode, String)

Создает сопоставленный с памятью файл с указанным режимом доступа и именем из файла на диске.

CreateFromFile(String, FileMode)

Создает сопоставленный с памятью файл, имеющий указанный режим доступа из файла на диске.

CreateFromFile(String)

Создает сопоставленный с памятью файл из файла на диске.

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

Создает сопоставленный с памятью файл с указанным именем, емкостью, типом доступа, параметрами выделения памяти и наследованием.

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

Создает сопоставленный с памятью файл с указанной емкостью, типом доступа, выделением памяти, разрешениями безопасности и наследованием в системной памяти.

CreateNew(String, Int64, MemoryMappedFileAccess)

Создает сопоставленный с памятью файл с указанной емкостью и типом доступа в системной памяти.

CreateNew(String, Int64)

Создает сопоставленный с памятью файл с указанной емкостью в системной памяти.

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

Создает пустой сопоставленный файл памяти или открывает существующий сопоставленный с памятью файл, если он существует с тем же именем. При открытии существующего файла аргументы емкости, параметров и памяти будут игнорироваться.

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

Создает или открывает сопоставленный с памятью файл с указанным именем, емкостью, типом доступа, выделением памяти, разрешениями безопасности и наследованием в системной памяти.

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

Создает или открывает сопоставленный с памятью файл с указанным именем, емкостью и типом доступа в системной памяти.

CreateOrOpen(String, Int64)

Создает или открывает сопоставленный с памятью файл с указанным именем и емкостью в системной памяти.

CreateViewAccessor()

MemoryMappedViewAccessor Создает представление сопоставленного с памятью файла.

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

MemoryMappedViewAccessor Создает представление сопоставленного с памятью файла и имеет указанное смещение, размер и ограничения доступа.

CreateViewAccessor(Int64, Int64)

MemoryMappedViewAccessor Создает представление сопоставленного с памятью файла и имеет указанное смещение и размер.

CreateViewStream()

Создает поток, который сопоставляется с представлением сопоставленного с памятью файла.

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

Создает поток, который сопоставляется с представлением сопоставленного с памятью файла, и имеет указанный тип смещения, размера и доступа.

CreateViewStream(Int64, Int64)

Создает поток, который сопоставляется с представлением сопоставленного с памятью файла, и имеет указанное смещение и размер.

Dispose()

Освобождает все ресурсы, используемые параметром MemoryMappedFile.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые MemoryMappedFile и при необходимости освобождает управляемые ресурсы.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetAccessControl()

Возвращает управление доступом к ресурсу файла, сопоставленного с памятью.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

Открывает существующий сопоставленный с памятью файл с указанным именем, правами доступа и наследованием в системной памяти.

OpenExisting(String, MemoryMappedFileRights)

Открывает существующий сопоставленный с памятью файл с указанным именем и правами доступа в системной памяти.

OpenExisting(String)

Открывает существующий сопоставленный с памятью файл с указанным именем в системной памяти.

SetAccessControl(MemoryMappedFileSecurity)

Задает управление доступом к ресурсу файла, сопоставленного с памятью.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел