UnmanagedMemoryStream Classe

Definição

Importante

Esta API não está em conformidade com CLS.

Fornece acesso a blocos de memória não geridos a partir de código gerido.

public ref class UnmanagedMemoryStream : System::IO::Stream
public class UnmanagedMemoryStream : System.IO.Stream
[System.CLSCompliant(false)]
public class UnmanagedMemoryStream : System.IO.Stream
type UnmanagedMemoryStream = class
    inherit Stream
[<System.CLSCompliant(false)>]
type UnmanagedMemoryStream = class
    inherit Stream
Public Class UnmanagedMemoryStream
Inherits Stream
Herança
UnmanagedMemoryStream
Herança
UnmanagedMemoryStream
Derivado
Atributos

Exemplos

O exemplo de código seguinte demonstra como ler e escrever na memória não gerida usando a UnmanagedMemoryStream classe. Um bloco de memória não gerida é alocado e desalocado usando a Marshal classe.


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

Observações

Esta classe suporta o acesso à memória não gerida usando o modelo existente baseado em fluxos e não exige que o conteúdo da memória não gerida seja copiado para o heap.

Note

Este tipo implementa a IDisposable interface, mas na verdade não tem recursos para eliminar. Isto significa que não é necessário eliminá-lo chamando diretamente Dispose() ou usando uma construção de linguagem como using (em C#) ou Using (em Visual Basic).

Construtores

Name Description
UnmanagedMemoryStream()

Inicializa uma nova instância da UnmanagedMemoryStream classe.

UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)

Inicializa uma nova instância da UnmanagedMemoryStream classe usando a localização especificada, comprimento de memória, quantidade total de memória e valores de acesso a ficheiros.

UnmanagedMemoryStream(Byte*, Int64)

Inicializa uma nova instância da UnmanagedMemoryStream classe usando a localização e comprimento de memória especificados.

UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess)

Inicializa uma nova instância da UnmanagedMemoryStream classe num buffer seguro com um offset, comprimento e acesso ao ficheiro especificados.

UnmanagedMemoryStream(SafeBuffer, Int64, Int64)

Inicializa uma nova instância da UnmanagedMemoryStream classe num buffer seguro com um offset e comprimento especificados.

Propriedades

Name Description
CanRead

Recebe um valor que indica se um fluxo suporta leitura.

CanSeek

Recebe um valor que indica se um fluxo suporta a procura.

CanTimeout

Obtém um valor que determina se o fluxo atual pode expirar.

(Herdado de Stream)
CanWrite

Recebe um valor que indica se um fluxo suporta escrita.

Capacity

Obtém o comprimento do fluxo (tamanho) ou a quantidade total de memória atribuída a um fluxo (capacidade).

Length

Obtém o comprimento dos dados num fluxo.

Position

Obtém ou define a posição atual num fluxo.

PositionPointer

Obtém ou define um ponteiro de byte para um fluxo com base na posição atual no fluxo.

ReadTimeout

Recebe ou define um valor, em milissegundos, que determina quanto tempo o fluxo tentará ler antes de expirar.

(Herdado de Stream)
WriteTimeout

Recebe ou define um valor, em milissegundos, que determina quanto tempo o fluxo tenta escrever antes de expirar.

(Herdado de Stream)

Métodos

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

Inicia uma operação de leitura assíncrona. (Considere usar ReadAsync(Byte[], Int32, Int32) em vez disso.)

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

Inicia uma operação de escrita assíncrona. (Considere usar WriteAsync(Byte[], Int32, Int32) em vez disso.)

(Herdado de Stream)
Close()

Fecha o fluxo atual e liberta quaisquer recursos (como sockets e handles de ficheiros) associados ao fluxo atual. Em vez de chamar este método, certifique-se de que o fluxo é devidamente descartado.

(Herdado de Stream)
CopyTo(Stream, Int32)

Lê os bytes do fluxo atual e escreve-os noutro fluxo, usando um tamanho de buffer especificado. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyTo(Stream)

Lê os bytes do fluxo atual e escreve-os noutro fluxo. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyToAsync(Stream, CancellationToken)

Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo, usando um token de cancelamento especificado. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo, usando um tamanho de buffer especificado e um token de cancelamento. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyToAsync(Stream, Int32)

Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo, usando um tamanho de buffer especificado. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyToAsync(Stream)

Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CreateObjRef(Type)

Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
CreateWaitHandle()
Obsoleto.

Aloca um WaitHandle objeto.

(Herdado de Stream)
Dispose()

Liberta todos os recursos utilizados pelo Stream.

(Herdado de Stream)
Dispose(Boolean)

Liberta os recursos não geridos usados pelo UnmanagedMemoryStream e opcionalmente liberta os recursos geridos.

DisposeAsync()

De forma assíncrona, liberta os recursos não geridos usados pelos Stream.

(Herdado de Stream)
EndRead(IAsyncResult)

Espera que a leitura assíncrona pendente seja concluída. (Considere usar ReadAsync(Byte[], Int32, Int32) em vez disso.)

(Herdado de Stream)
EndWrite(IAsyncResult)

Termina uma operação de escrita assíncrona. (Considere usar WriteAsync(Byte[], Int32, Int32) em vez disso.)

(Herdado de Stream)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Flush()

Sobrepõe o Flush() método para que nenhuma ação seja realizada.

FlushAsync()

Apaga assíncronamente todos os buffers deste fluxo e faz com que quaisquer dados armazenados sejam escritos no dispositivo subjacente.

(Herdado de Stream)
FlushAsync(CancellationToken)

Sobrepõe o FlushAsync(CancellationToken) método para que a operação seja cancelada se especificada, mas nenhuma outra ação é realizada.

FlushAsync(CancellationToken)

Apaga assíncronamente todos os buffers deste fluxo, faz com que quaisquer dados armazenados sejam escritos no dispositivo subjacente e monitoriza os pedidos de cancelamento.

(Herdado de Stream)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetLifetimeService()

Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso.

(Herdado de MarshalByRefObject)
GetType()

Obtém o Type da instância atual.

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

Inicializa uma nova instância da UnmanagedMemoryStream classe usando um ponteiro para uma localização de memória não gerida.

Initialize(SafeBuffer, Int64, Int64, FileAccess)

Inicializa uma nova instância da UnmanagedMemoryStream classe num buffer seguro com um offset, comprimento e acesso ao ficheiro especificados.

InitializeLifetimeService()

Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso.

(Herdado de MarshalByRefObject)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto atual MarshalByRefObject .

(Herdado de MarshalByRefObject)
ObjectInvariant()
Obsoleto.

Fornece suporte para um Contract.

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

Lê o número especificado de bytes no array especificado.

Read(Span<Byte>)

Lê todos os bytes deste fluxo de memória não gerido no intervalo especificado de bytes.

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

Lê assíncronamente o número especificado de bytes no array especificado.

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

A leitura assíncrona uma sequência de bytes do fluxo atual, avança a posição dentro do fluxo pelo número de bytes lidos e monitoriza pedidos de cancelamento.

(Herdado de Stream)
ReadAsync(Byte[], Int32, Int32)

A leitura assíncrona uma sequência de bytes do fluxo atual e avança a posição dentro do fluxo pelo número de bytes lidos.

(Herdado de Stream)
ReadAsync(Memory<Byte>, CancellationToken)

A leitura assíncrona os bytes do fluxo de memória não geridos para a região de memória.

ReadByte()

Lê um byte de um fluxo e avança a posição dentro do fluxo em um byte, ou devolve -1 se estiver no final do fluxo.

Seek(Int64, SeekOrigin)

Define a posição atual do fluxo atual para o valor dado.

SetLength(Int64)

Define o comprimento de um fluxo para um valor especificado.

ToString()

Devolve uma cadeia que representa o objeto atual.

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

Escreve um bloco de bytes no fluxo atual usando dados de um buffer.

Write(ReadOnlySpan<Byte>)

Escreve um bloco de bytes no fluxo de memória não gerida atual usando dados do intervalo de bytes fornecido.

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

Escreve assíncronamente uma sequência de bytes no fluxo atual, avança a posição atual dentro deste fluxo pelo número de bytes escritos e monitoriza pedidos de cancelamento.

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

Escreve assíncronamente uma sequência de bytes no fluxo atual, avança a posição atual dentro deste fluxo pelo número de bytes escritos e monitoriza pedidos de cancelamento.

(Herdado de Stream)
WriteAsync(Byte[], Int32, Int32)

Escreve assíncronamente uma sequência de bytes no fluxo atual e avança a posição atual dentro desse fluxo pelo número de bytes escritos.

(Herdado de Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

O Assíncrono escreve um intervalo de bytes no fluxo atual, avança a posição atual dentro deste fluxo pelo número de bytes escritos e monitoriza pedidos de cancelamento.

WriteByte(Byte)

Escreve um byte na posição atual no fluxo de ficheiros.

Métodos da Extensão

Name Description
AsInputStream(Stream)

Converte um fluxo gerido nas aplicações .NET for Windows Store num fluxo de entrada no Windows Runtime.

AsOutputStream(Stream)

Converte um fluxo gerido nas aplicações .NET for Windows Store num fluxo de saída no Windows Runtime.

AsRandomAccessStream(Stream)

Converte o fluxo especificado num fluxo de acesso aleatório.

ConfigureAwait(IAsyncDisposable, Boolean)

Configura como aguarda nas tarefas devolvidas de um descartável assíncrono será realizada.

Aplica-se a