Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase UnmanagedMemoryStream

 

Publicado: octubre de 2016

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

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

System.Object
  System.MarshalByRefObject
    System.IO.Stream
      System.IO.UnmanagedMemoryStream
        System.IO.MemoryMappedFiles.MemoryMappedViewStream

public class UnmanagedMemoryStream : Stream

NombreDescripción
System_CAPS_protmethodUnmanagedMemoryStream()

Inicializa una nueva instancia de la clase UnmanagedMemoryStream.

System_CAPS_pubmethodUnmanagedMemoryStream(Byte*, Int64)

Inicializa una instancia nueva de la clase UnmanagedMemoryStream utilizando la ubicación y la longitud de memoria especificadas.

System_CAPS_pubmethodUnmanagedMemoryStream(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.

System_CAPS_pubmethodUnmanagedMemoryStream(SafeBuffer, Int64, Int64)

Inicializa una nueva instancia de la clase UnmanagedMemoryStream en un búfer seguro con un desplazamiento y una longitud especificados.

System_CAPS_pubmethodUnmanagedMemoryStream(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.

NombreDescripción
System_CAPS_pubpropertyCanRead

Obtiene un valor que indica si una secuencia admite operaciones de lectura.(Invalida Stream.CanRead).

System_CAPS_pubpropertyCanSeek

Obtiene un valor que indica si una secuencia admite búsquedas.(Invalida Stream.CanSeek).

System_CAPS_pubpropertyCanTimeout

Obtiene un valor que determina si se puede agotar el tiempo de espera de la secuencia actual.(Heredado de Stream).

System_CAPS_pubpropertyCanWrite

Obtiene un valor que indica si una secuencia admite operaciones de escritura.(Invalida Stream.CanWrite).

System_CAPS_pubpropertyCapacity

Obtiene la longitud de la secuencia (tamaño) o la cantidad total de memoria asignada a una secuencia (capacidad).

System_CAPS_pubpropertyLength

Obtiene la longitud de los datos de una secuencia.(Invalida Stream.Length).

System_CAPS_pubpropertyPosition

Obtiene o establece la posición actual en una secuencia.(Invalida Stream.Position).

System_CAPS_pubpropertyPositionPointer

Obtiene o establece un puntero de byte a una secuencia basándose en la posición actual en la secuencia.

System_CAPS_pubpropertyReadTimeout

Obtiene 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.(Heredado de Stream).

System_CAPS_pubpropertyWriteTimeout

Obtiene 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.(Heredado de Stream).

NombreDescripción
System_CAPS_pubmethodBeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Comienza una operación de lectura asincrónica. (Utilice ReadAsync en su lugar; vea la sección Comentarios).(Heredado de Stream).

System_CAPS_pubmethodBeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Comienza una operación de escritura asincrónica. (Utilice WriteAsync en su lugar; vea la sección Comentarios).(Heredado de Stream).

System_CAPS_pubmethodClose()

Cierra 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 la secuencia se desecha correctamente.(Heredado de Stream).

System_CAPS_pubmethodCopyTo(Stream)

Cierra la secuencia actual y libera todos los recursos (tales como sockets y manejadores de archivo)asociados a la secuencia actual. (Heredado de Stream).

System_CAPS_pubmethodCopyTo(Stream, Int32)

En vez de llamar a este método, asegúrese de que la secuencia actual ha sido correctamente liberada. (Heredado de Stream).

System_CAPS_pubmethodCopyToAsync(Stream)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia.(Heredado de Stream).

System_CAPS_pubmethodCopyToAsync(Stream, Int32)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado.(Heredado de Stream).

System_CAPS_pubmethodCopyToAsync(Stream, Int32, CancellationToken)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia, utilizando el tamaño de búfer y el token de cancelación especificados.(Heredado de Stream).

System_CAPS_pubmethodCreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar a un proxy que se utiliza para comunicarse con un objeto remoto.(Heredado de MarshalByRefObject).

System_CAPS_protmethodCreateWaitHandle()

Obsoleto. Asigna un objeto WaitHandle.(Heredado de Stream).

System_CAPS_pubmethodDispose()

Libera todos los recursos que usa Stream.(Heredado de Stream).

System_CAPS_protmethodDispose(Boolean)

Libera los recursos no administrados que usa UnmanagedMemoryStream y libera los recursos administrados de forma opcional.(Invalida Stream.Dispose(Boolean)).

System_CAPS_pubmethodEndRead(IAsyncResult)

Espera a que se complete la lectura asincrónica que se encuentra pendiente. (Utilice ReadAsync en su lugar; vea la sección Comentarios).(Heredado de Stream).

System_CAPS_pubmethodEndWrite(IAsyncResult)

Finaliza una operación de escritura asincrónica. (Utilice WriteAsync en su lugar; vea la sección Comentarios).(Heredado de Stream).

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object).

System_CAPS_pubmethodFlush()

Reemplaza el método Flush de modo que no se realice ninguna acción.(Invalida Stream.Flush()).

System_CAPS_pubmethodFlushAsync()

Borra asincrónicamente todos los búferes de esta secuencia y hace que los datos almacenados en búfer se escriban en el dispositivo subyacente.(Heredado de Stream).

System_CAPS_pubmethodFlushAsync(CancellationToken)

Invalida el método Stream.FlushAsync para que la operación se cancele si se especifica, pero no se realiza ninguna otra acción.

Disponible a partir de .NET Framework 4.6(Invalida Stream.FlushAsync(CancellationToken)).

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_protmethodInitialize(Byte*, Int64, Int64, FileAccess)

Inicializa una nueva instancia de la clase UnmanagedMemoryStream utilizando un puntero a una ubicación de memoria no administrada.

System_CAPS_protmethodInitialize(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.

System_CAPS_pubmethodInitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.(Heredado de MarshalByRefObject).

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_protmethodMemberwiseClone(Boolean)

Crea una copia superficial del elemento actual MarshalByRefObject objeto.(Heredado de MarshalByRefObject).

System_CAPS_protmethodObjectInvariant()

Obsoleto. Esta API admite la infraestructura producto y no está diseñada para usarse directamente desde el código. Proporciona compatibilidad con una clase Contract.(Heredado de Stream).

System_CAPS_pubmethodRead(Byte[], Int32, Int32)

Lee el número especificado de bytes y los introduce en la matriz especificada.(Invalida Stream.Read(Byte[], Int32, Int32)).

System_CAPS_pubmethodReadAsync(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.(Heredado de Stream).

System_CAPS_pubmethodReadAsync(Byte[], Int32, Int32, CancellationToken)

Lee de manera asincrónica el número especificado de bytes y los introduce en la matriz especificada.

Disponible a partir de .NET Framework 4.6(Invalida Stream.ReadAsync(Byte[], Int32, Int32, CancellationToken)).

System_CAPS_pubmethodReadByte()

Lee 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 Stream.ReadByte()).

System_CAPS_pubmethodSeek(Int64, SeekOrigin)

Establece la posición actual de la secuencia actual en el valor especificado.(Invalida Stream.Seek(Int64, SeekOrigin)).

System_CAPS_pubmethodSetLength(Int64)

Establece la longitud de una secuencia en un valor especificado.(Invalida Stream.SetLength(Int64)).

System_CAPS_pubmethodToString()

Devuelve una cadena que representa al objeto actual. (Heredado de Object).

System_CAPS_pubmethodWrite(Byte[], Int32, Int32)

Escribe un bloque de bytes en la secuencia actual utilizando los datos de un búfer.(Invalida Stream.Write(Byte[], Int32, Int32)).

System_CAPS_pubmethodWriteAsync(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.(Heredado de Stream).

System_CAPS_pubmethodWriteAsync(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.

Disponible a partir de .NET Framework 4.6(Invalida Stream.WriteAsync(Byte[], Int32, Int32, CancellationToken)).

System_CAPS_pubmethodWriteByte(Byte)

Escribe un byte en la posición actual de la secuencia de archivo.(Invalida Stream.WriteByte(Byte)).

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

System_CAPS_importantImportante

Este tipo implementa la IDisposable interfaz. Cuando haya terminado de utilizar el tipo, debería eliminar, directa o indirectamente. Para deshacerse del tipo directamente, llame a su Dispose método en un try/catch bloque. Para deshacerse de él indirectamente, usar una construcción de lenguaje como using (en C#) o Using (en Visual Basic). Para obtener más información, consulte la sección "Uso de un objeto que implementa IDisposable" en el IDisposable tema de la interfaz.

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


// 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();
    }
}

Plataforma universal de Windows
Disponible desde 10
.NET Framework
Disponible desde 2.0
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: