MemoryMappedFile Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Vertegenwoordigt een geheugentoewijzingsbestand.
public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
- Overname
-
MemoryMappedFile
- Implementeringen
Voorbeelden
In het volgende voorbeeld wordt een geheugenweergave gemaakt van een deel van een zeer groot bestand en wordt een deel ervan bewerkt.
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
Opmerkingen
Een geheugentoewijzingsbestand wijst de inhoud van een bestand toe aan de logische adresruimte van een toepassing. Met geheugen toegewezen bestanden kunnen programmeurs met extreem grote bestanden werken, omdat het geheugen gelijktijdig kan worden beheerd en ze volledige, willekeurige toegang tot een bestand toestaan zonder dat ze op zoek hoeven te zijn. Geheugen toegewezen bestanden kunnen ook worden gedeeld over meerdere processen.
De CreateFromFile methoden maken een geheugentoewijzingsbestand op basis van een opgegeven pad of een FileStream bestaand bestand op schijf. Wijzigingen worden automatisch doorgegeven aan de schijf wanneer het bestand niet is toegewezen.
De CreateNew methoden maken een geheugentoewijzingsbestand dat niet is toegewezen aan een bestaand bestand op schijf en zijn geschikt voor het maken van gedeeld geheugen voor IPC (Interprocess Communication).
Een geheugentoewijzingsbestand kan worden gekoppeld aan een optionele naam waarmee het geheugentoewijzingsbestand kan worden gedeeld met andere processen.
U kunt meerdere weergaven van het geheugentoewijzingsbestand maken, inclusief weergaven van delen van het bestand. U kunt hetzelfde deel van een bestand toewijzen aan meer dan één adres om gelijktijdig geheugen te maken. Om twee weergaven gelijktijdig te houden, moeten ze gebaseerd zijn op hetzelfde geheugen-gehecht bestand. Het maken van twee bestandstoewijzingen van hetzelfde bestand met twee weergaven biedt geen gelijktijdigheid.
Eigenschappen
| Name | Description |
|---|---|
| SafeMemoryMappedFileHandle |
Hiermee haalt u de bestandsgreep van een geheugentoewijzingsbestand op. |
Methoden
| Name | Description |
|---|---|
| CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, HandleInheritability, Boolean) |
Hiermee maakt u een geheugentoewijzingsbestand op basis van een bestaand bestand met de opgegeven toegangsmodus, naam, overname en capaciteit. |
| CreateFromFile(FileStream, String, Int64, MemoryMappedFileAccess, MemoryMappedFileSecurity, HandleInheritability, Boolean) |
Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven naam, capaciteit, toegangstype, beveiligingsmachtigingen, overname- en verwijderingsvereiste van een bestand op schijf. |
| CreateFromFile(String, FileMode, String, Int64, MemoryMappedFileAccess) |
Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven toegangsmodus, naam, capaciteit en toegangstype van een bestand op schijf. |
| CreateFromFile(String, FileMode, String, Int64) |
Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven toegangsmodus, naam en capaciteit van een bestand op schijf. |
| CreateFromFile(String, FileMode, String) |
Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven toegangsmodus en naam van een bestand op schijf. |
| CreateFromFile(String, FileMode) |
Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven toegangsmodus van een bestand op schijf. |
| CreateFromFile(String) |
Hiermee maakt u een geheugentoewijzingsbestand op basis van een bestand op schijf. |
| CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) |
Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven naam, capaciteit, toegangstype, opties voor geheugentoewijzing en overdraagbaarheid. |
| CreateNew(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) |
Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven capaciteit, toegangstype, geheugentoewijzing, beveiligingsmachtigingen en overnamemogelijkheden in het systeemgeheugen. |
| CreateNew(String, Int64, MemoryMappedFileAccess) |
Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven capaciteit en het toegangstype in het systeemgeheugen. |
| CreateNew(String, Int64) |
Hiermee maakt u een geheugentoewijzingsbestand met de opgegeven capaciteit in het systeemgeheugen. |
| CreateOrOpen(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, HandleInheritability) |
Hiermee maakt u een nieuw leeg geheugen toegewezen bestand of opent u een bestaand geheugen toegewezen bestand als er een bestaat met dezelfde naam. Als u een bestaand bestand opent, worden de capaciteit, opties en geheugenargumenten genegeerd. |
| CreateOrOpen(String, Int64, MemoryMappedFileAccess, MemoryMappedFileOptions, MemoryMappedFileSecurity, HandleInheritability) |
Hiermee maakt of opent u een geheugentoewijzingsbestand met de opgegeven naam, capaciteit, toegangstype, geheugentoewijzing, beveiligingsmachtigingen en overnamemogelijkheden in het systeemgeheugen. |
| CreateOrOpen(String, Int64, MemoryMappedFileAccess) |
Hiermee maakt of opent u een geheugentoewijzingsbestand met de opgegeven naam, capaciteit en toegangstype in het systeemgeheugen. |
| CreateOrOpen(String, Int64) |
Hiermee maakt of opent u een geheugentoewijzingsbestand met de opgegeven naam en capaciteit in het systeemgeheugen. |
| CreateViewAccessor() |
Hiermee maakt u een MemoryMappedViewAccessor bestand dat is toegewezen aan een weergave van het geheugentoewijzingsbestand. |
| CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess) |
Hiermee maakt u een MemoryMappedViewAccessor weergave van het geheugentoewijzingsbestand en met de opgegeven offset, grootte en toegangsbeperkingen. |
| CreateViewAccessor(Int64, Int64) |
Hiermee maakt u een MemoryMappedViewAccessor weergave van het geheugentoewijzingsbestand en met de opgegeven offset en grootte. |
| CreateViewStream() |
Hiermee maakt u een stream die wordt toegewezen aan een weergave van het geheugentoewijzingsbestand. |
| CreateViewStream(Int64, Int64, MemoryMappedFileAccess) |
Hiermee maakt u een stroom die wordt toegewezen aan een weergave van het geheugentoewijzingsbestand en dat de opgegeven offset, grootte en toegangstype heeft. |
| CreateViewStream(Int64, Int64) |
Hiermee maakt u een stream die wordt toegewezen aan een weergave van het geheugentoewijzingsbestand en die de opgegeven offset en grootte heeft. |
| Dispose() |
Alle resources die worden gebruikt door de MemoryMappedFile. |
| Dispose(Boolean) |
Publiceert de niet-beheerde resources die worden gebruikt door de MemoryMappedFile beheerde resources en brengt eventueel de beheerde resources vrij. |
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetAccessControl() |
Hiermee haalt u het toegangsbeheer op voor de bestandsresource die is toegewezen aan het geheugen. |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| OpenExisting(String, MemoryMappedFileRights, HandleInheritability) |
Hiermee opent u een bestaand geheugentoewijzingsbestand met de opgegeven naam, toegangsrechten en overnamemogelijkheden in het systeemgeheugen. |
| OpenExisting(String, MemoryMappedFileRights) |
Hiermee opent u een bestaand geheugentoewijzingsbestand met de opgegeven naam en toegangsrechten in het systeemgeheugen. |
| OpenExisting(String) |
Hiermee opent u een bestaand geheugentoewijzingsbestand met de opgegeven naam in het systeemgeheugen. |
| SetAccessControl(MemoryMappedFileSecurity) |
Hiermee stelt u het toegangsbeheer in op de bron van het geheugentoewijzingsbestand. |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |