MemoryMappedFile Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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) |