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) |