UnmanagedMemoryStream Clase

Definición

Importante

Esta API no es conforme a CLS.

Proporciona acceso a los bloques de memoria no administrada desde el código administrado.Provides access to unmanaged blocks of memory from managed code.

public ref class UnmanagedMemoryStream : System::IO::Stream
[System.CLSCompliant(false)]
public class UnmanagedMemoryStream : System.IO.Stream
type UnmanagedMemoryStream = class
    inherit Stream
Public Class UnmanagedMemoryStream
Inherits Stream
Herencia
UnmanagedMemoryStream
Derivado
Atributos

Ejemplos

En el ejemplo de código siguiente se muestra cómo leer y escribir en la memoria no administrada UnmanagedMemoryStream mediante la clase.The following code example demonstrates how to read from and write to unmanaged memory using the UnmanagedMemoryStream class. Se asigna y se anula la asignación de un bloque de memoria no administrada Marshal mediante la clase.A block of unmanaged memory is allocated and de-allocated using the Marshal class.


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

Comentarios

Esta clase admite el acceso a la memoria no administrada mediante el modelo basado en secuencias existente y no requiere que el contenido de la memoria no administrada se copie en el montón.This class supports access to unmanaged memory using the existing stream-based model and does not require that the contents in the unmanaged memory be copied to the heap.

Nota

Este tipo implementa la interfaz de IDisposable, pero no ofrece ningún recurso.This type implements the IDisposable interface, but does not actually have any resources to dispose. Esto quiere decir que no es necesario llamar a Dispose() ni usar ningún lenguaje de construcción como using (en C#) o Using (en Visual Basic) para disponer de él.This means that disposing it by directly calling Dispose() or by using a language construct such as using (in C#) or Using (in Visual Basic) is not necessary.

Constructores

UnmanagedMemoryStream()

Inicializa una nueva instancia de la clase UnmanagedMemoryStream.Initializes a new instance of the UnmanagedMemoryStream class.

UnmanagedMemoryStream(Byte*, Int64)

Inicializa una instancia nueva de la clase UnmanagedMemoryStream utilizando la ubicación y la longitud de memoria especificadas.Initializes a new instance of the UnmanagedMemoryStream class using the specified location and memory length.

UnmanagedMemoryStream(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.Initializes a new instance of the UnmanagedMemoryStream class using the specified location, memory length, total amount of memory, and file access values.

UnmanagedMemoryStream(SafeBuffer, Int64, Int64)

Inicializa una nueva instancia de la clase UnmanagedMemoryStream en un búfer seguro con un desplazamiento y una longitud especificados.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset and length.

UnmanagedMemoryStream(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.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset, length, and file access.

Propiedades

CanRead

Obtiene un valor que indica si una secuencia admite operaciones de lectura.Gets a value indicating whether a stream supports reading.

CanSeek

Obtiene un valor que indica si una secuencia admite búsquedas.Gets a value indicating whether a stream supports seeking.

CanTimeout

Obtiene un valor que determina si se puede agotar el tiempo de espera de la secuencia actual.Gets a value that determines whether the current stream can time out.

(Heredado de Stream)
CanWrite

Obtiene un valor que indica si una secuencia admite operaciones de escritura.Gets a value indicating whether a stream supports writing.

Capacity

Obtiene la longitud de la secuencia (tamaño) o la cantidad total de memoria asignada a una secuencia (capacidad).Gets the stream length (size) or the total amount of memory assigned to a stream (capacity).

Length

Obtiene la longitud de los datos de una secuencia.Gets the length of the data in a stream.

Position

Obtiene o establece la posición actual en una secuencia.Gets or sets the current position in a stream.

PositionPointer

Obtiene o establece un puntero de byte a una secuencia basándose en la posición actual en la secuencia.Gets or sets a byte pointer to a stream based on the current position in the stream.

ReadTimeout

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.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Heredado de Stream)
WriteTimeout

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.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Heredado de Stream)

Métodos

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

Comienza una operación de lectura asincrónica.Begins an asynchronous read operation. (Considere usar ReadAsync(Byte[], Int32, Int32) en su lugar).(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Heredado de Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Comienza una operación de escritura asincrónica.Begins an asynchronous write operation. (Considere usar WriteAsync(Byte[], Int32, Int32) en su lugar).(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Heredado de Stream)
Close()

Cierra la secuencia actual y libera todos los recursos (como sockets e identificadores de archivo) asociados a esta.Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. En lugar de llamar a este método, asegúrese de que la secuencia se desecha correctamente.Instead of calling this method, ensure that the stream is properly disposed.

(Heredado de Stream)
CopyTo(Stream)

Lee los bytes de la secuencia actual y los escribe en otra secuencia de destino.Reads the bytes from the current stream and writes them to another stream.

(Heredado de Stream)
CopyTo(Stream, Int32)

Lee todos los bytes de la secuencia actual y los escribe en otra secuencia, usando el tamaño de búfer especificado.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Heredado de Stream)
CopyToAsync(Stream)

Lee asincrónicamente los bytes de la secuencia actual y los escribe en otra secuencia.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Heredado de Stream)
CopyToAsync(Stream, CancellationToken)

Lee de forma asincrónica los bytes de la secuencia actual y los escribe en otra secuencia mediante un token de cancelación especificado.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Heredado de Stream)
CopyToAsync(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.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Heredado de Stream)
CopyToAsync(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.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

(Heredado de Stream)
CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Heredado de MarshalByRefObject)
CreateWaitHandle()

Asigna un objeto WaitHandle.Allocates a WaitHandle object.

(Heredado de Stream)
Dispose()

Libera todos los recursos que usa Stream.Releases all resources used by the Stream.

(Heredado de Stream)
Dispose(Boolean)

Libera los recursos no administrados que usa UnmanagedMemoryStream y, de forma opcional, libera los recursos administrados.Releases the unmanaged resources used by the UnmanagedMemoryStream and optionally releases the managed resources.

DisposeAsync()

Libera de forma asincrónica los recursos no administrados usados por Stream.Asynchronously releases the unmanaged resources used by the Stream.

(Heredado de Stream)
EndRead(IAsyncResult)

Espera a que se complete la lectura asincrónica que se encuentra pendiente.Waits for the pending asynchronous read to complete. (Considere usar ReadAsync(Byte[], Int32, Int32) en su lugar).(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Heredado de Stream)
EndWrite(IAsyncResult)

Finaliza una operación de escritura asincrónica.Ends an asynchronous write operation. (Considere usar WriteAsync(Byte[], Int32, Int32) en su lugar).(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Heredado de Stream)
Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
Flush()

Reemplaza el método Flush() de modo que no se realice ninguna acción.Overrides the Flush() method so that no action is performed.

FlushAsync()

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.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Heredado de Stream)
FlushAsync(CancellationToken)

Invalida el método FlushAsync(CancellationToken) para que la operación se cancele si se especifica, pero no se realiza ninguna otra acción.Overrides the FlushAsync(CancellationToken) method so that the operation is cancelled if specified, but no other action is performed.

GetHashCode()

Sirve como la función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Heredado de MarshalByRefObject)
GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
Initialize(Byte*, Int64, Int64, FileAccess)

Inicializa una nueva instancia de la clase UnmanagedMemoryStream utilizando un puntero a una ubicación de memoria no administrada.Initializes a new instance of the UnmanagedMemoryStream class by using a pointer to an unmanaged memory location.

Initialize(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.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset, length, and file access.

InitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.Obtains a lifetime service object to control the lifetime policy for this instance.

(Heredado de MarshalByRefObject)
MemberwiseClone()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.Creates a shallow copy of the current MarshalByRefObject object.

(Heredado de MarshalByRefObject)
ObjectInvariant()

Proporciona compatibilidad con una clase Contract.Provides support for a Contract.

(Heredado de Stream)
Read(Byte[], Int32, Int32)

Lee el número especificado de bytes y los introduce en la matriz especificada.Reads the specified number of bytes into the specified array.

Read(Span<Byte>)

Lee todos los bytes de esta secuencia de memoria no administrada en el intervalo de bytes especificado.Reads all the bytes of this unmanaged memory stream into the specified span of bytes.

ReadAsync(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.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Heredado de Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Lee de manera asincrónica el número especificado de bytes y los introduce en la matriz especificada.Asynchronously reads the specified number of bytes into the specified array.

ReadAsync(Memory<Byte>, CancellationToken)

Lee de forma asincrónica los bytes de la secuencia de memoria no administrada en la región de memoria.Asynchronously reads the unmanaged memory stream bytes into the memory region.

ReadByte()

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.Reads a byte from a stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.

Seek(Int64, SeekOrigin)

Establece la posición actual de la secuencia actual en el valor especificado.Sets the current position of the current stream to the given value.

SetLength(Int64)

Establece la longitud de una secuencia en un valor especificado.Sets the length of a stream to a specified value.

ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)
Write(Byte[], Int32, Int32)

Escribe un bloque de bytes en la secuencia actual utilizando los datos de un búfer.Writes a block of bytes to the current stream using data from a buffer.

Write(ReadOnlySpan<Byte>)

Escribe un bloque de bytes en la secuencia de memoria no administrada actual usando datos del intervalo de bytes proporcionado.Writes a block of bytes to the current unmanaged memory stream using data from the provided span of bytes.

WriteAsync(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.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Heredado de Stream)
WriteAsync(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.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Escribe de forma asincrónica un intervalo de bytes en la secuencia actual, avanza la posición actual dentro de la secuencia el número de bytes escritos y controla las solicitudes de cancelación.Asynchronously writes a span of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

WriteByte(Byte)

Escribe un byte en la posición actual de la secuencia de archivo.Writes a byte to the current position in the file stream.

Implementaciones de interfaz explícitas

IDisposable.Dispose()

Libera todos los recursos que usa Stream.Releases all resources used by the Stream.

(Heredado de Stream)

Métodos de extensión

AsInputStream(Stream)

Convierte un flujo administrado de .NET para aplicaciones de Microsoft Store en un flujo de entrada de Windows Runtime.Converts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime.

AsOutputStream(Stream)

Convierte un flujo administrado de .NET para aplicaciones de Microsoft Store en un flujo de salida de Windows Runtime.Converts a managed stream in the .NET for Windows Store apps to an output stream in the Windows Runtime.

AsRandomAccessStream(Stream)

Convierte la secuencia especificada en una secuencia de acceso aleatorio.Converts the specified stream to a random access stream.

Se aplica a