MemoryMappedFile Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje soubor mapovaný do 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ý do paměti mapuje obsah souboru na logický adresní prostor aplikace. Soubory mapované do paměti 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 hledat. Soubory mapované do paměti lze také sdílet napříč několika procesy.
Metody CreateFromFile vytvoří soubor mapovaný do paměti ze zadané cesty nebo FileStream existujícího souboru na disku. Změny se automaticky rozšíří na disk, když soubor není namapovaný.
Metody CreateNew vytvářejí soubor mapovaný v paměti, který není namapován na existující soubor na disku; a jsou vhodné pro vytvoření sdílené paměti pro komunikaci mezi procesy (IPC).
Soubor mapovaný do paměti lze přidružit k volitelnému názvu, který umožňuje sdílení souboru mapovaného paměti s jinými procesy.
Můžete vytvořit více zobrazení souboru mapovaného paměti, včetně zobrazení částí souboru. Pokud chcete vytvořit souběžnou paměť, můžete namapovat stejnou část souboru na více než jednu adresu. Aby dvě zobrazení zůstala souběžná, musí být vytvořena ze stejného pamětí mapovaného souboru. Vytvoření dvou mapování souborů stejného souboru se dvěma zobrazeními neposkytuje souběžnost.
Vlastnosti
| Name | Description |
|---|---|
| SafeMemoryMappedFileHandle |
Získá popisovač souboru mapovaného paměti. |
Metody
| Name | Description |
|---|---|
| CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean) |
Vytvoří soubor mapovaný do paměti z existujícího souboru se zadaným režimem přístupu, názvem, zděditelností a kapacitou. |
| CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, MemoryMappedFileSecurity, HandleInheritability, Boolean) |
Vytvoří soubor mapovaný do paměti, který má zadaný název, kapacitu, typ přístupu, oprávnění zabezpečení, zděděnost a požadavek na odstranění souboru na disku. |
| CreateFromFile(SafeFileHandle, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean) |
Vytvoří soubor mapovaný do paměti z existujícího souboru pomocí SafeFileHandle zadaného režimu přístupu, názvu, zděděnosti a kapacity. |
| CreateFromFile(String, FileMode, String, Int64, MemoryMappedFileAccess) |
Vytvoří soubor mapovaný do paměti se zadaným režimem přístupu, názvem, kapacitou a typem přístupu ze souboru na disku. |
| CreateFromFile(String, FileMode, String, Int64) |
Vytvoří soubor mapovaný v paměti, který má zadaný režim přístupu, název a kapacitu ze souboru na disku. |
| CreateFromFile(String, FileMode, String) |
Vytvoří soubor mapovaný do paměti, který má zadaný režim přístupu a název ze souboru na disku. |
| CreateFromFile(String, FileMode) |
Vytvoří soubor mapovaný do paměti, který má zadaný režim přístupu ze souboru na disku. |
| CreateFromFile(String) |
Vytvoří soubor mapovaný do paměti ze souboru na disku. |
| CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) |
Vytvoří soubor mapovaný do paměti se zadaným názvem, kapacitou, typem přístupu, možnostmi přidělení paměti a dědičností. |
| CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) |
Vytvoří soubor mapovaný do paměti se zadanou 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. |
| CreateNew(String, Int64, MemoryMappedFileAccess) |
Vytvoří soubor mapovaný v paměti, který má zadanou kapacitu a typ přístupu v systémové paměti. |
| CreateNew(String, Int64) |
Vytvoří soubor mapovaný do paměti, který má zadanou kapacitu v systémové paměti. |
| CreateOrOpen(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) |
Vytvoří nový namapovaný soubor s prázdnou pamětí nebo otevře existující namapovaný soubor paměti, pokud existuje se stejným názvem. Pokud otevřete existující soubor, kapacita, možnosti a argumenty paměti budou ignorovány. |
| CreateOrOpen(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) |
Vytvoří nebo otevře soubor mapovaný v 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. |
| CreateOrOpen(String, Int64, MemoryMappedFileAccess) |
Vytvoří nebo otevře soubor mapovaný v paměti se zadaným názvem, kapacitou a typem přístupu v systémové paměti. |
| CreateOrOpen(String, Int64) |
Vytvoří nebo otevře soubor mapovaný v paměti, který má zadaný název a kapacitu v systémové paměti. |
| CreateViewAccessor() |
Vytvoří MemoryMappedViewAccessor mapování na zobrazení souboru mapovaného paměti. |
| CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess) |
Vytvoří MemoryMappedViewAccessor mapování na zobrazení souboru mapovaného paměti a se zadaným posunem, velikostí a omezeními přístupu. |
| CreateViewAccessor(Int64, Int64) |
MemoryMappedViewAccessor Vytvoří mapování na zobrazení souboru mapovaného paměti a se zadaným posunem a velikostí. |
| CreateViewStream() |
Vytvoří datový proud, který se mapuje na zobrazení souboru mapovaného paměti. |
| CreateViewStream(Int64, Int64, MemoryMappedFileAccess) |
Vytvoří datový proud, který se mapuje na zobrazení souboru mapovaného paměti a který má zadaný typ posunu, velikosti a přístupu. |
| CreateViewStream(Int64, Int64) |
Vytvoří datový proud, který se mapuje na zobrazení souboru mapovaného paměti a který má zadaný posun a velikost. |
| Dispose() |
Uvolní všechny prostředky používané nástrojem MemoryMappedFile. |
| Dispose(Boolean) |
Uvolní nespravované prostředky používané MemoryMappedFile a volitelně uvolní spravované prostředky. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetAccessControl() |
Získá řízení přístupu k prostředku souboru mapovaného paměti. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| OpenExisting(String, MemoryMappedFileRights, HandleInheritability) |
Otevře existující soubor mapovaný v paměti, který má zadaný název, přístupová práva a zděděnost v systémové paměti. |
| OpenExisting(String, MemoryMappedFileRights) |
Otevře existující soubor mapovaný v paměti, který má zadaný název a přístupová práva v systémové paměti. |
| OpenExisting(String) |
Otevře existující soubor mapovaný v paměti, který má zadaný název v systémové paměti. |
| SetAccessControl(MemoryMappedFileSecurity) |
Nastaví řízení přístupu k prostředku souboru mapovaného v paměti. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |