MemoryMappedFile Classe

Definizione

Rappresenta un file mappato alla memoria.

public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
    interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
Ereditarietà
MemoryMappedFile
Implementazioni

Esempio

L'esempio seguente crea una visualizzazione di cui viene eseguito il mapping alla memoria di una parte di un file molto grande e ne modifica una parte.

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

Commenti

Un file mappato alla memoria esegue il mapping del contenuto di un file allo spazio indirizzi logico di un'applicazione. I file mappati alla memoria consentono ai programmatori di lavorare con file estremamente grandi perché la memoria può essere gestita simultaneamente e consentono l'accesso casuale completo a un file senza la necessità di cercare. I file mappati alla memoria possono anche essere condivisi tra più processi.

I CreateFromFile metodi creano un file mappato alla memoria da un percorso specificato o da un FileStream file esistente su disco. Le modifiche vengono propagate automaticamente al disco quando il file viene annullato.

I CreateNew metodi creano un file mappato alla memoria che non viene mappato a un file esistente su disco e sono adatti per la creazione di memoria condivisa per la comunicazione interprocesso (IPC).

Un file mappato alla memoria può essere associato a un nome facoltativo che consente la condivisione del file mappato alla memoria con altri processi.

È possibile creare più visualizzazioni del file mappato alla memoria, incluse le visualizzazioni delle parti del file. È possibile eseguire il mapping della stessa parte di un file a più indirizzi per creare memoria simultanea. Per rimanere simultanee, due visualizzazioni devono essere create dallo stesso file di cui è stato eseguito il mapping alla memoria. La creazione di due mapping di file dello stesso file con due visualizzazioni non fornisce concorrenza.

Proprietà

SafeMemoryMappedFileHandle

Ottiene l'handle di file di un file mappato alla memoria.

Metodi

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

Crea un file mappato alla memoria da un file esistente con la modalità di accesso, il nome, l'ereditabilità e la capacità specificati.

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

Crea un file mappato alla memoria con il nome, la capacità, il tipo di accesso, le autorizzazioni di sicurezza, l'ereditabilità e requisito di eliminazione specificati da un file su disco.

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

Crea un file mappato alla memoria da un file esistente usando una SafeFileHandle e la modalità di accesso specificata, il nome, l'ereditabilità e la capacità.

CreateFromFile(String)

Crea un file mappato alla memoria da un file su disco.

CreateFromFile(String, FileMode)

Crea un file mappato alla memoria con la modalità di accesso specificata da un file su disco.

CreateFromFile(String, FileMode, String)

Crea un file mappato alla memoria con il nome e la modalità di accesso specificati da un file su disco.

CreateFromFile(String, FileMode, String, Int64)

Crea un file mappato alla memoria con la modalità di accesso, il nome e la capacità specificati da un file su disco.

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

Crea un file mappato alla memoria con la modalità di accesso, il nome, la capacità e il tipo di accesso specificati da un file su disco.

CreateNew(String, Int64)

Crea un file mappato alla memoria con la capacità specificata nella memoria di sistema.

CreateNew(String, Int64, MemoryMappedFileAccess)

Crea un file mappato alla memoria con la capacità e il tipo di accesso specificati nella memoria di sistema.

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

Crea un file mappato alla memoria con il nome, la capacità, il tipo di accesso, le opzioni di allocazione di memoria e l'ereditabilità specificati.

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

Crea un file mappato alla memoria con la capacità, il tipo di accesso, l'allocazione di memoria, le autorizzazioni di sicurezza e l'ereditabilità specificati nella memoria di sistema.

CreateOrOpen(String, Int64)

Crea o apre un file di cui è stato eseguito il mapping alla memoria che ha il nome e la capacità specificati nella memoria di sistema.

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

Crea o apre un file di cui è stato eseguito il mapping alla memoria che ha il nome, la capacità e il tipo di accesso specificati nella memoria di sistema.

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

Crea un nuovo file mappato alla memoria vuoto oppure ne apre uno esistente se ne esiste uno con lo stesso nome. Nel caso dell'apertura di un file esistente, la capacità, le opzioni e gli argomenti relativi alla memoria verranno ignorati.

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

Crea o apre un file di cui è stato eseguito il mapping alla memoria che ha il nome, la capacità, il tipo di accesso, l'allocazione di memoria, le autorizzazioni di sicurezza e l'ereditabilità specificati nella memoria di sistema.

CreateViewAccessor()

Crea un oggetto MemoryMappedViewAccessor mappato a una visualizzazione del file mappato alla memoria.

CreateViewAccessor(Int64, Int64)

Crea un oggetto MemoryMappedViewAccessor mappato a una visualizzazione del file mappato alla memoria, con l'offset e la dimensione specificati.

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

Crea un oggetto MemoryMappedViewAccessor mappato a una visualizzazione del file mappato alla memoria, con l'offset, la dimensione e le restrizioni di accesso specificati.

CreateViewStream()

Crea un flusso mappato a una visualizzazione del file mappato alla memoria.

CreateViewStream(Int64, Int64)

Crea un flusso mappato a una visualizzazione del file mappato alla memoria, con l'offset e la dimensione specificati.

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

Crea un flusso mappato a una visualizzazione del file mappato alla memoria, con l'offset, la dimensione e il tipo di accesso specificati.

Dispose()

Rilascia tutte le risorse usate da MemoryMappedFile.

Dispose(Boolean)

Rilascia le risorse non gestite usate da MemoryMappedFile e, facoltativamente, le risorse gestite.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetAccessControl()

Ottiene il controllo di accesso della risorsa di un file mappato alla memoria.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
OpenExisting(String)

Apre un file mappato alla memoria esistente con il nome specificato nella memoria di sistema.

OpenExisting(String, MemoryMappedFileRights)

Apre un file mappato alla memoria esistente con il nome e i diritti di accesso specificati nella memoria di sistema.

OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

Apre un file mappato alla memoria esistente con il nome, i diritti di accesso e l'ereditabilità specificati nella memoria di sistema.

SetAccessControl(MemoryMappedFileSecurity)

Imposta il controllo di accesso della risorsa di un file mappato alla memoria.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Vedi anche