2010-09-06 5 views

Respuesta

6

No se puede, es una clase abstracta. La única implementación concreta visible es SafeMemoryMappedViewHandle, una clase auxiliar para las clases en el espacio de nombres System.IO.MemoryMappedFiles. Tiene un constructor no accesible, ya que solo puede ser inicializado correctamente por la tubería que hace que los archivos mapeados en memoria funcionen.

El caso de uso es un IntPtr que se asigna a la memoria no administrada, administrada por un identificador. Bastante raro en la API de Windows, MapViewOfFile o GlobalAllocPtr, por ejemplo. Si desea crear uno propio, debe derivar de SafeBuffer para que pueda llamar a su constructor y llamar, por ejemplo, Adquirir un puntero. La mayor parte de esto no es seguro. ¿Qué estás realmente tratando de hacer?

+0

Estoy tratando de leer un archivo muy grande (bytestream) del disco en un UnmanagedMemoryStream. El archivo es mayor que el número máximo de bytes que puede contener bytearray. – ManInMoon

+0

Bueno, use el soporte de .NET 4.0 para archivos asignados de memoria. Inútil reinventar MemoryMappedViewStream. En realidad, no hace que leer el archivo sea más rápido. –

+0

Gracias Hans. Lo he intentado pero MemoryMappedFiles es muy lento – ManInMoon