MemoryMappedFile.CreateFromFile Metodo

Definizione

Crea un file mappato alla memoria da un file esistente.

Overload

Nome Descrizione
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 la modalità di accesso e il nome 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.

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'ereditarietà e il requisito di eliminazione da un file su disco.

CreateFromFile(String)

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

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path);
static member CreateFromFile : string -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String) As MemoryMappedFile

Parametri

path
String

Percorso del file di cui eseguire il mapping.

Valori restituiti

File mappato alla memoria.

Eccezioni

path è una stringa vuota, contiene solo spazi vuoti o ha uno o più caratteri non validi, come definito dal GetInvalidFileNameChars() metodo .

oppure

path fa riferimento a un dispositivo non valido.

path è null.

Si è verificato un errore di I/O.

path supera la lunghezza massima definita dal sistema operativo.

Il chiamante non dispone delle autorizzazioni necessarie per il file.

Esempio

Nell'esempio seguente viene usato il CreateFromFile metodo per creare un file mappato alla memoria e quindi viene creata una visualizzazione mappata alla memoria in una parte di un file estremamente grande.

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

Vedi anche

Si applica a

CreateFromFile(String, FileMode)

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

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path, System::IO::FileMode mode);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode);
static member CreateFromFile : string * System.IO.FileMode -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String, mode As FileMode) As MemoryMappedFile

Parametri

path
String

Percorso del file di cui eseguire il mapping.

mode
FileMode

Modalità di accesso; deve essere Open.

Valori restituiti

File mappato alla memoria con la modalità di accesso specificata.

Eccezioni

path è una stringa vuota, contiene solo spazi vuoti o ha uno o più caratteri non validi, come definito dal GetInvalidFileNameChars() metodo .

oppure

path fa riferimento a un dispositivo non valido.

oppure

mode è Append.

path è null.

mode è Create, CreateNewo Truncate.

oppure

mode è OpenOrCreate e il file su disco non esiste.

oppure

Si è verificato un errore di I/O.

path supera la lunghezza massima definita dal sistema operativo.

Il chiamante non dispone delle autorizzazioni necessarie per il file.

Commenti

Il mode parametro riguarda il file di origine su disco. È possibile usare solo il Open valore di enumerazione per creare il file mappato alla memoria dal file di origine su disco.

Vedi anche

Si applica a

CreateFromFile(String, FileMode, String)

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

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path, System::IO::FileMode mode, System::String ^ mapName);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string mapName);
static member CreateFromFile : string * System.IO.FileMode * string -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String, mode As FileMode, mapName As String) As MemoryMappedFile

Parametri

path
String

Percorso del file di cui eseguire il mapping.

mode
FileMode

Modalità di accesso; deve essere Open.

mapName
String

Nome da assegnare al file mappato alla memoria o null per un MemoryMappedFile oggetto che non si intende condividere tra processi.

Valori restituiti

File mappato alla memoria con il nome e la modalità di accesso specificati.

Eccezioni

path è una stringa vuota, contiene solo spazi vuoti o ha uno o più caratteri non validi, come definito dal GetInvalidFileNameChars() metodo .

oppure

path fa riferimento a un dispositivo non valido.

oppure

mapName è una stringa vuota.

oppure

mode è Append.

path è null.

mode è Create, CreateNewo Truncate.

oppure

mode è OpenOrCreate e il file su disco non esiste.

oppure

Si è verificato un errore di I/O.

path supera la lunghezza massima definita dal sistema operativo.

Il chiamante non dispone delle autorizzazioni necessarie per il file.

Commenti

Il mode parametro riguarda il file di origine su disco. È possibile usare solo il Open valore di enumerazione per creare il file mappato alla memoria dal file di origine su disco.

Si applica a

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.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path, System::IO::FileMode mode, System::String ^ mapName, long capacity);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string mapName, long capacity);
static member CreateFromFile : string * System.IO.FileMode * string * int64 -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String, mode As FileMode, mapName As String, capacity As Long) As MemoryMappedFile

Parametri

path
String

Percorso del file di cui eseguire il mapping.

mode
FileMode

Modalità di accesso; può essere uno qualsiasi dei FileMode valori di enumerazione tranne Append.

mapName
String

Nome da assegnare al file mappato alla memoria o null per un MemoryMappedFile oggetto che non si intende condividere tra processi.

capacity
Int64

Dimensione massima, in byte, da allocare al file mappato alla memoria. Specificare 0 per impostare la capacità sulle dimensioni del file su disco.

Valori restituiti

File mappato alla memoria con le caratteristiche specificate.

Eccezioni

path è una stringa vuota, contiene solo spazi vuoti o ha uno o più caratteri non validi, come definito dal GetInvalidFileNameChars() metodo .

oppure

path fa riferimento a un dispositivo non valido.

oppure

mapName è una stringa vuota.

oppure

mode è Append.

path è null.

capacity è maggiore delle dimensioni dello spazio indirizzi logico.

oppure

capacity è minore di zero.

oppure

capacity è minore delle dimensioni del file (ma non zero).

oppure

capacity è zero e anche le dimensioni del file su disco sono pari a zero.

Si è verificato un errore di I/O.

path supera la lunghezza massima definita dal sistema operativo.

Il chiamante non dispone delle autorizzazioni necessarie per il file.

Commenti

Il mode parametro riguarda il file di origine su disco.

Se capacity è maggiore delle dimensioni del file su disco, il file su disco viene aumentato in modo da corrispondere alla capacità specificata anche se non vengono scritti dati nel file mappato alla memoria. Per evitare che ciò si verifichi, specificare 0 (zero) per la capacità predefinita, che verrà impostata capacity internamente sulle dimensioni del file su disco.

Si applica a

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.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::String ^ path, System::IO::FileMode mode, System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access);
[System.Security.SecurityCritical]
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(string path, System.IO.FileMode mode, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access);
[<System.Security.SecurityCritical>]
static member CreateFromFile : string * System.IO.FileMode * string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess -> System.IO.MemoryMappedFiles.MemoryMappedFile
static member CreateFromFile : string * System.IO.FileMode * string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (path As String, mode As FileMode, mapName As String, capacity As Long, access As MemoryMappedFileAccess) As MemoryMappedFile

Parametri

path
String

Percorso del file di cui eseguire il mapping.

mode
FileMode

Modalità di accesso; può essere uno qualsiasi dei FileMode valori di enumerazione tranne Append.

mapName
String

Nome da assegnare al file mappato alla memoria o null per un MemoryMappedFile oggetto che non si intende condividere tra processi.

capacity
Int64

Dimensione massima, in byte, da allocare al file mappato alla memoria. Specificare 0 per impostare la capacità sulle dimensioni del file su disco.

access
MemoryMappedFileAccess

Uno dei valori di enumerazione che specifica il tipo di accesso consentito al file mappato alla memoria.

Valori restituiti

File mappato alla memoria con le caratteristiche specificate.

Attributi

Eccezioni

mapName è una stringa vuota.

oppure

access non è un valore consentito.

oppure

path specifica un file vuoto.

oppure

access viene specificato come Read e la capacità è maggiore delle dimensioni del file indicato da path.

oppure

mode è Append.

path è null.

capacity è maggiore delle dimensioni dello spazio indirizzi logico.

oppure

capacity è minore di zero.

oppure

capacity è minore delle dimensioni del file (ma non zero).

oppure

capacity è zero e anche le dimensioni del file su disco sono pari a zero.

oppure

access non è un valore definito MemoryMappedFileAccess .

oppure

Le dimensioni del file indicato da path sono maggiori di capacity.

oppure

Si è verificato un errore di I/O.

path supera la lunghezza massima definita dal sistema operativo.

Il chiamante non dispone delle autorizzazioni necessarie per il file.

Commenti

Il mode parametro riguarda il file di origine su disco.

Se capacity è maggiore delle dimensioni del file su disco, il file su disco viene aumentato in modo da corrispondere alla capacità specificata anche se non vengono scritti dati nel file mappato alla memoria. Per evitare che ciò si verifichi, specificare 0 (zero) per la capacità predefinita, che verrà impostata capacity internamente sulle dimensioni del file su disco.

Vedi anche

Si applica a

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.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::IO::FileStream ^ fileStream, System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access, System::IO::HandleInheritability inheritability, bool leaveOpen);
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(System.IO.FileStream fileStream, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.HandleInheritability inheritability, bool leaveOpen);
static member CreateFromFile : System.IO.FileStream * string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess * System.IO.HandleInheritability * bool -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (fileStream As FileStream, mapName As String, capacity As Long, access As MemoryMappedFileAccess, inheritability As HandleInheritability, leaveOpen As Boolean) As MemoryMappedFile

Parametri

fileStream
FileStream

Flusso di file del file esistente.

mapName
String

Nome da assegnare al file mappato alla memoria o null per un MemoryMappedFile oggetto che non si intende condividere tra processi.

capacity
Int64

Dimensione massima, in byte, da allocare al file mappato alla memoria. Specificare 0 per impostare la capacità sulle dimensioni di filestream.

access
MemoryMappedFileAccess

Uno dei valori di enumerazione che specifica il tipo di accesso consentito al file mappato alla memoria.

Questo parametro non può essere impostato su Write.

inheritability
HandleInheritability

Uno dei valori di enumerazione che specifica se un handle per il file mappato alla memoria può essere ereditato da un processo figlio. Il valore predefinito è None.

leaveOpen
Boolean

Valore che indica se chiudere il flusso del file di origine quando viene MemoryMappedFile eliminato.

Valori restituiti

File mappato alla memoria con le caratteristiche specificate.

Eccezioni

mapName è null o una stringa vuota.

oppure

capacity e la lunghezza del file sono zero.

oppure

access è impostato su Write o Write il valore di enumerazione, che non è consentito.

oppure

access è impostato su Read e capacity è maggiore della lunghezza di filestream.

fileStream è null.

capacity è minore di zero.

oppure

capacity è minore delle dimensioni del file.

oppure

access non è un valore di enumerazione valido MemoryMappedFileAccess .

oppure

inheritability non è un valore di enumerazione valido HandleInheritability .

Si applica a

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'ereditarietà e il requisito di eliminazione da un file su disco.

public:
 static System::IO::MemoryMappedFiles::MemoryMappedFile ^ CreateFromFile(System::IO::FileStream ^ fileStream, System::String ^ mapName, long capacity, System::IO::MemoryMappedFiles::MemoryMappedFileAccess access, System::IO::MemoryMappedFiles::MemoryMappedFileSecurity ^ memoryMappedFileSecurity, System::IO::HandleInheritability inheritability, bool leaveOpen);
[System.Security.SecurityCritical]
public static System.IO.MemoryMappedFiles.MemoryMappedFile CreateFromFile(System.IO.FileStream fileStream, string mapName, long capacity, System.IO.MemoryMappedFiles.MemoryMappedFileAccess access, System.IO.MemoryMappedFiles.MemoryMappedFileSecurity memoryMappedFileSecurity, System.IO.HandleInheritability inheritability, bool leaveOpen);
[<System.Security.SecurityCritical>]
static member CreateFromFile : System.IO.FileStream * string * int64 * System.IO.MemoryMappedFiles.MemoryMappedFileAccess * System.IO.MemoryMappedFiles.MemoryMappedFileSecurity * System.IO.HandleInheritability * bool -> System.IO.MemoryMappedFiles.MemoryMappedFile
Public Shared Function CreateFromFile (fileStream As FileStream, mapName As String, capacity As Long, access As MemoryMappedFileAccess, memoryMappedFileSecurity As MemoryMappedFileSecurity, inheritability As HandleInheritability, leaveOpen As Boolean) As MemoryMappedFile

Parametri

fileStream
FileStream

Oggetto fileStream del file di cui eseguire il mapping.

mapName
String

Nome da assegnare al file mappato alla memoria o null per un MemoryMappedFile oggetto che non si intende condividere tra processi.

capacity
Int64

Dimensione massima, in byte, da allocare al file mappato alla memoria. Specificare 0 per impostare la capacità sulle dimensioni del file su disco.

access
MemoryMappedFileAccess

Uno dei valori di enumerazione che specifica il tipo di accesso consentito al file mappato alla memoria.

Questo parametro non può essere impostato su Write.

memoryMappedFileSecurity
MemoryMappedFileSecurity

Autorizzazioni che possono essere concesse per l'accesso ai file e le operazioni sui file mappati alla memoria.

Questo parametro può essere null.

inheritability
HandleInheritability

Uno dei valori di enumerazione che specifica se un handle per il file mappato alla memoria può essere ereditato da un processo figlio. Il valore predefinito è None.

leaveOpen
Boolean

true per non eliminare fileStream dopo la chiusura di MemoryMappedFile ; false per eliminare fileStream.

Valori restituiti

File mappato alla memoria con le caratteristiche specificate.

Attributi

Eccezioni

mapName è una stringa vuota.

oppure

capacity e la lunghezza del file sono zero.

oppure

access è impostato sul Read valore di enumerazione o Write che non è consentito.

fileStream è null.

capacity è minore di zero.

oppure

capacity è minore delle dimensioni del file.

oppure

access non è un valore di enumerazione valido MemoryMappedFileAccess .

oppure

inheritability non è un valore di enumerazione valido HandleInheritability .

fileStream è stato chiuso.

access è impostato su ReadWrite quando fileStreaml'accesso di è impostato su Read o Write.

mapName esiste già.

Commenti

Se capacity è maggiore delle dimensioni del file su disco, il file su disco viene aumentato in modo da corrispondere alla capacità specificata anche se non vengono scritti dati nel file mappato alla memoria. Per evitare che ciò si verifichi, specificare 0 (zero) per la capacità predefinita, che verrà impostata capacity internamente sulle dimensioni del file su disco.

Vedi anche

Si applica a