Поделиться через


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)

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

CreateFromFile(String, FileMode)

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

CreateFromFile(String, FileMode, String)

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

CreateFromFile(String, FileMode, String, Int64)

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

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

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

CreateNew(String, Int64)

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

CreateNew(String, Int64, MemoryMappedFileAccess)

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

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

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

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

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

CreateOrOpen(String, Int64)

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

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

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

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

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

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

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

CreateViewAccessor()

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

CreateViewAccessor(Int64, Int64)

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

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

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

CreateViewStream()

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

CreateViewStream(Int64, Int64)

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

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

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

Dispose()

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

Dispose(Boolean)

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

Equals(Object)

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

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

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

GetHashCode()

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

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

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

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

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

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

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

OpenExisting(String, MemoryMappedFileRights)

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

OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

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

SetAccessControl(MemoryMappedFileSecurity)

Задает элемент управления доступом к ресурсу размещенного в памяти файла.

ToString()

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

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

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

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