Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

UnmanagedMemoryStream (Clase)

Proporciona acceso a los bloques de memoria no administrada desde el código administrado.

Espacio de nombres:  System.IO
Ensamblado:  mscorlib (en mscorlib.dll)

public class UnmanagedMemoryStream : Stream

El tipo UnmanagedMemoryStream expone los siguientes miembros.

  NombreDescripción
Método protegidoUnmanagedMemoryStream()Inicializa una nueva instancia de la clase UnmanagedMemoryStream.
Método públicoUnmanagedMemoryStream(Byte*, Int64)Inicializa una instancia nueva de la clase UnmanagedMemoryStream utilizando la ubicación y la longitud de memoria especificadas.
Método públicoUnmanagedMemoryStream(SafeBuffer, Int64, Int64)Inicializa una nueva instancia de la clase UnmanagedMemoryStream en un búfer seguro con un desplazamiento y una longitud especificados.
Método públicoUnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)Inicializa una instancia nueva de la clase UnmanagedMemoryStream utilizando los valores especificados de ubicación, longitud de memoria, cantidad total de memoria y acceso a archivos.
Método públicoUnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess)Inicializa una nueva instancia de la clase UnmanagedMemoryStream en un búfer seguro con un desplazamiento, una longitud y un acceso a archivo especificados.
Arriba

  NombreDescripción
Propiedad públicaCanReadObtiene un valor que indica si una secuencia admite operaciones de lectura. (Invalida a Stream.CanRead).
Propiedad públicaCanSeekObtiene un valor que indica si una secuencia admite búsquedas. (Invalida a Stream.CanSeek).
Propiedad públicaCanTimeoutObtiene un valor que determina si se puede agotar el tiempo de espera de la secuencia actual. (Se hereda de Stream).
Propiedad públicaCanWriteObtiene un valor que indica si una secuencia admite operaciones de escritura. (Invalida a Stream.CanWrite).
Propiedad públicaCapacityObtiene la longitud de la secuencia (tamaño) o la cantidad total de memoria asignada a una secuencia (capacidad).
Propiedad públicaLengthObtiene la longitud de los datos de una secuencia. (Invalida a Stream.Length).
Propiedad públicaPositionObtiene o establece la posición actual en una secuencia. (Invalida a Stream.Position).
Propiedad públicaPositionPointerObtiene o establece un puntero de byte a una secuencia basándose en la posición actual en la secuencia.
Propiedad públicaReadTimeoutObtiene o establece un valor, en milisegundos, que determina durante cuánto tiempo la secuencia intentará realizar operaciones de lectura antes de que se agote el tiempo de espera. (Se hereda de Stream).
Propiedad públicaWriteTimeoutObtiene o establece un valor, en milisegundos, que determina durante cuánto tiempo la secuencia intentará realizar operaciones de escritura antes de que se agote el tiempo de espera. (Se hereda de Stream).
Arriba

  NombreDescripción
Método públicoBeginReadComienza una operación de lectura asincrónica. (Utilice ReadAsync en su lugar; vea la sección comentarios.) (Se hereda de Stream).
Método públicoBeginWriteComienza una operación de escritura asincrónica. (Considere usar WriteAsync en su lugar; vea la sección comentarios). (Se hereda de Stream).
Método públicoCloseCierra la secuencia actual y libera todos los recursos (como sockets e identificadores de archivo) asociados a esta. En lugar de llamar a este método, asegúrese de que el flujo se desecha correctamente. (Se hereda de Stream).
Método públicoCopyTo(Stream) Cierra la secuencia actual y libera todos los recursos (tales como sockets y manejadores de archivo)asociados a la secuencia actual. (Se hereda de Stream).
Método públicoCopyTo(Stream, Int32) En vez de llamar a este método, asegúrese de que la secuencia actual ha sido correctamente liberada. (Se hereda de Stream).
Método públicoCopyToAsync(Stream)Lee asincrónicamente todos los bytes de la secuencia actual y los escribe en otra secuencia. (Se hereda de Stream).
Método públicoCopyToAsync(Stream, Int32)Lee asincrónicamente todos los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado. (Se hereda de Stream).
Método públicoCopyToAsync(Stream, Int32, CancellationToken)Lee asincrónicamente los bytes de la secuencia actual y los escribe en otro flujo, utilizando el tamaño de búfer especificado y el token de cancelación. (Se hereda de Stream).
Método públicoCreateObjRefCrea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto. (Se hereda de MarshalByRefObject).
Método protegidoCreateWaitHandle Obsoleto. Asigna un objeto WaitHandle. (Se hereda de Stream).
Método públicoDispose()Libera todos los recursos utilizados por Stream. (Se hereda de Stream).
Método protegidoDispose(Boolean)Libera los recursos no administrados que UnmanagedMemoryStream utiliza y, opcionalmente, libera los recursos administrados. (Invalida a Stream.Dispose(Boolean)).
Método públicoEndReadEspera a que se complete la lectura asincrónica que se encuentra pendiente. (Utilice ReadAsync en su lugar; vea la sección comentarios.) (Se hereda de Stream).
Método públicoEndWriteFinaliza una operación de escritura asincrónica. (Considere usar WriteAsync en su lugar; vea la sección comentarios). (Se hereda de Stream).
Método públicoEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método protegidoFinalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método públicoFlushReemplaza el método Flush de modo que no se realice ninguna acción. (Invalida a Stream.Flush()).
Método públicoFlushAsync()Borra asincrónicamente todos los búferes para este flujo y hace que los datos almacenados en búfer se escriban en el dispositivo subyacente. (Se hereda de Stream).
Método públicoFlushAsync(CancellationToken)Borra asincrónicamente todos los búferes del flujo actual y hace que todos los datos almacenados en el búfer se escriban en el dispositivo subyacente y supervisa las solicitudes de cancelación. (Se hereda de Stream).
Método públicoGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método públicoGetLifetimeServiceRecupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método protegidoInitialize(Byte*, Int64, Int64, FileAccess)Inicializa una nueva instancia de la clase UnmanagedMemoryStream utilizando un puntero a una ubicación de memoria no administrada.
Método protegidoInitialize(SafeBuffer, Int64, Int64, FileAccess)Inicializa una nueva instancia de la clase UnmanagedMemoryStream en un búfer seguro con un desplazamiento, una longitud y un acceso a archivo especificados.
Método públicoInitializeLifetimeServiceObtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método protegidoMemberwiseClone() Crea una copia superficial del Object actual. (Se hereda de Object).
Método protegidoMemberwiseClone(Boolean)Crea una copia superficial del objeto MarshalByRefObject actual. (Se hereda de MarshalByRefObject).
Método protegidoObjectInvariantInfraestructura. Obsoleto. Proporciona compatibilidad con una clase Contract. (Se hereda de Stream).
Método públicoReadLee el número especificado de bytes y los introduce en la matriz especificada. (Invalida a Stream.Read(Byte[], Int32, Int32)).
Método públicoReadAsync(Byte[], Int32, Int32)Lee asincrónicamente una secuencia de bytes de la secuencia actual y avanza la posición en esta secuencia según el número de bytes leídos. (Se hereda de Stream).
Método públicoReadAsync(Byte[], Int32, Int32, CancellationToken)Lee de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición dentro de la secuencia el número de bytes leídos y controla las solicitudes de cancelación. (Se hereda de Stream).
Método públicoReadByteLee un byte de una secuencia y hace avanzar la posición dentro de la secuencia en un byte, o devuelve -1 si está al final de la secuencia. (Invalida a Stream.ReadByte()).
Método públicoSeekEstablece la posición actual de la secuencia actual en el valor especificado. (Invalida a Stream.Seek(Int64, SeekOrigin)).
Método públicoSetLengthEstablece la longitud de una secuencia en un valor especificado. (Invalida a Stream.SetLength(Int64)).
Método públicoToString Retorna una cadena que representa al objeto actual. (Se hereda de Object).
Método públicoWriteEscribe un bloque de bytes en la secuencia actual utilizando los datos de un búfer. (Invalida a Stream.Write(Byte[], Int32, Int32)).
Método públicoWriteAsync(Byte[], Int32, Int32)Escribe asincrónicamente una secuencia de bytes en la secuencia actual y avanza la posición actual en esta secuencia según el número de bytes escritos. (Se hereda de Stream).
Método públicoWriteAsync(Byte[], Int32, Int32, CancellationToken)Escribe de forma asincrónica una secuencia de bytes en la secuencia actual, se hace avanzar la posición actual dentro de la secuencia el número de bytes escritos y controla las solicitudes de cancelación. (Se hereda de Stream).
Método públicoWriteByteEscribe un byte en la posición actual de la secuencia de archivo. (Invalida a Stream.WriteByte(Byte)).
Arriba

Esta clase admite el acceso a la memoria no administrada utilizando el modelo basado en secuencias existente y no requiere copiar al montón el contenido de la memoria no administrada.

En el ejemplo de código siguiente se muestra cómo leer y escribir en una memoria no administrada utilizando la clase UnmanagedMemoryStream. Un bloque de memoria no administrada se asigna o se desasigna mediante la clase Marshal.



// Note: you must compile this sample using the unsafe flag.
// From the command line, type the following: csc sample.cs /unsafe

using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;

unsafe class TestWriter
{

    static void Main()
	{
		
            // Create some data to read and write.
            byte[] message = UnicodeEncoding.Unicode.GetBytes("Here is some data.");

	    // Allocate a block of unmanaged memory and return an IntPtr object.	
            IntPtr memIntPtr = Marshal.AllocHGlobal(message.Length);

            // Get a byte pointer from the IntPtr object.
            byte* memBytePtr = (byte*) memIntPtr.ToPointer();

            // Create an UnmanagedMemoryStream object using a pointer to unmanaged memory.
            UnmanagedMemoryStream writeStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Write);

            // Write the data.
            writeStream.Write(message, 0, message.Length);

            // Close the stream.
            writeStream.Close();

            // Create another UnmanagedMemoryStream object using a pointer to unmanaged memory.
            UnmanagedMemoryStream readStream = new UnmanagedMemoryStream(memBytePtr, message.Length, message.Length, FileAccess.Read);

	    // Create a byte array to hold data from unmanaged memory.
            byte[] outMessage = new byte[message.Length];

            // Read from unmanaged memory to the byte array.
            readStream.Read(outMessage, 0, message.Length);

            // Close the stream.
            readStream.Close();

            // Display the data to the console.
            Console.WriteLine(UnicodeEncoding.Unicode.GetString(outMessage));

            // Free the block of unmanaged memory.
            Marshal.FreeHGlobal(memIntPtr);

            Console.ReadLine();
    }
}


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros públicos static (Shared en Visual Basic) de este tipo son seguros para subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft