Compartir a través de


MemoryMappedFile Clase

Definición

Representa un archivo asignado a la memoria.

public ref class MemoryMappedFile : IDisposable
public class MemoryMappedFile : IDisposable
type MemoryMappedFile = class
    interface IDisposable
Public Class MemoryMappedFile
Implements IDisposable
Herencia
MemoryMappedFile
Implementaciones

Ejemplos

En el ejemplo siguiente se crea una vista asignada a memoria de una parte de un archivo muy grande y se manipula una parte de él.

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

Comentarios

Un archivo asignado a memoria asigna el contenido de un archivo al espacio de direcciones lógicas de una aplicación. Los archivos asignados a memoria permiten a los programadores trabajar con archivos extremadamente grandes porque la memoria se puede administrar simultáneamente y permiten el acceso completo y aleatorio a un archivo sin necesidad de buscar. Los archivos asignados a memoria también se pueden compartir entre varios procesos.

Los CreateFromFile métodos crean un archivo asignado a memoria a partir de una ruta de acceso especificada o de un FileStream archivo existente en el disco. Los cambios se propagan automáticamente al disco cuando el archivo no está asignado.

Los CreateNew métodos crean un archivo asignado a memoria que no está asignado a un archivo existente en el disco y son adecuados para crear memoria compartida para la comunicación entre procesos (IPC).

Un archivo asignado a memoria se puede asociar a un nombre opcional que permite que el archivo asignado a memoria se comparta con otros procesos.

Puede crear varias vistas del archivo asignado a memoria, incluidas las vistas de partes del archivo. Puede asignar la misma parte de un archivo a más de una dirección para crear memoria simultánea. Para que dos vistas sigan siendo simultáneas, tienen que crearse a partir del mismo archivo asignado a memoria. La creación de dos asignaciones de archivos del mismo archivo con dos vistas no proporciona simultaneidad.

Propiedades

SafeMemoryMappedFileHandle

Obtiene el identificador de un archivo asignado a la memoria.

Métodos

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

Crea un archivo asignado a la memoria a partir de un archivo existente con el modo de acceso, el nombre, la cualidad de heredable y la capacidad que se especifiquen.

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

Crea un archivo asignado a la memoria con el nombre, la capacidad, el tipo de acceso, los permisos de seguridad, la herencia y el requisito de eliminación especificados de un archivo de disco.

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

Crea un archivo asignado a memoria a partir de un archivo existente mediante y SafeFileHandle el modo de acceso, el nombre, la heredera y la capacidad especificados.

CreateFromFile(String)

Crea un archivo asignado a la memoria a partir de un archivo de disco.

CreateFromFile(String, FileMode)

Crea un archivo asignado a la memoria que tiene el modo de acceso especificado de un archivo de disco.

CreateFromFile(String, FileMode, String)

Crea un archivo asignado a la memoria que tiene el modo de acceso y el nombre especificados de un archivo de disco.

CreateFromFile(String, FileMode, String, Int64)

Crea un archivo asignado a la memoria que tiene el modo de acceso, el nombre y la capacidad especificados de un archivo de disco.

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

Crea un archivo asignado a la memoria que tiene el modo de acceso, el nombre, la capacidad y el tipo de acceso especificados de un archivo de disco.

CreateNew(String, Int64)

Crea un archivo asignado a la memoria con la capacidad especificada en la memoria del sistema.

CreateNew(String, Int64, MemoryMappedFileAccess)

Crea un archivo asignado a la memoria con la capacidad y el tipo de acceso especificados en la memoria del sistema.

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

Crea un archivo asignado a la memoria que tiene el nombre, la capacidad, el tipo de acceso, las opciones de asignación de memoria y la cualidad de heredable que se especifiquen.

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

Crea un archivo asignado a la memoria con la capacidad, el tipo de acceso, la asignación de memoria, los permisos de seguridad y la herencia especificados en la memoria del sistema.

CreateOrOpen(String, Int64)

Crea o abre un archivo asignado a la memoria con el nombre y la capacidad especificados en la memoria del sistema.

CreateOrOpen(String, Int64, MemoryMappedFileAccess)

Crea o abre un archivo asignado a la memoria con el nombre, la capacidad y el tipo de acceso especificados en la memoria del sistema.

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

Crea un archivo asignado a la memoria vacío o abre un archivo asignado a la memoria existente si existe uno con el mismo nombre. Si se abre un archivo existente, se omitirán la capacidad, las opciones y los argumentos de memoria.

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

Crea o abre un archivo asignado a la memoria con el nombre, la capacidad, el tipo de acceso, la asignación de memoria, los permisos de seguridad y la herencia especificados en la memoria del sistema.

CreateViewAccessor()

Crea un MemoryMappedViewAccessor que se asigna a una vista del archivo asignado a la memoria.

CreateViewAccessor(Int64, Int64)

Crea un MemoryMappedViewAccessor que se asigna a una vista del archivo asignado a la memoria y que tiene el desplazamiento y el tamaño especificados.

CreateViewAccessor(Int64, Int64, MemoryMappedFileAccess)

Crea un MemoryMappedViewAccessor que se asigna a una vista del archivo asignado a la memoria y que tiene el desplazamiento, el tamaño y las restricciones de acceso especificados.

CreateViewStream()

Crea una secuencia que se asigna a una vista del archivo asignado a la memoria.

CreateViewStream(Int64, Int64)

Crea una secuencia que se asigna a una vista del archivo asignado a la memoria y que tiene el desplazamiento y el tamaño especificados.

CreateViewStream(Int64, Int64, MemoryMappedFileAccess)

Crea una secuencia que se asigna a una vista del archivo asignado a la memoria y que tiene el desplazamiento, el tamaño y el tipo de acceso especificados.

Dispose()

Libera todos los recursos que usa MemoryMappedFile.

Dispose(Boolean)

Libera los recursos no administrados que usa MemoryMappedFile y, de forma opcional, libera los recursos administrados.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetAccessControl()

Obtiene el control de acceso al recurso de archivo asignado a la memoria.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
OpenExisting(String)

Abre un archivo asignado a la memoria existente que tiene el nombre especificado en la memoria del sistema.

OpenExisting(String, MemoryMappedFileRights)

Abre un archivo asignado a la memoria existente que tiene el nombre y los permisos de acceso especificados en la memoria del sistema.

OpenExisting(String, MemoryMappedFileRights, HandleInheritability)

Abre un archivo asignado a la memoria existente que tiene el nombre, los permisos de acceso y la herencia especificados en la memoria del sistema.

SetAccessControl(MemoryMappedFileSecurity)

Establece el control de acceso al recurso de archivo asignado a la memoria.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Se aplica a

Consulte también