UnmanagedMemoryStream Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Importante
Esta API não está em conformidade com CLS.
Fornece acesso aos blocos de memória não gerenciados a partir de código gerenciado.
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
- Herança
- Derivado
- Atributos
Exemplos
O exemplo de código a seguir demonstra como ler e gravar na memória não gerenciada usando a UnmanagedMemoryStream classe . Um bloco de memória não gerenciada é 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();
}
}
Comentários
Essa classe dá suporte ao acesso à memória não gerenciada usando o modelo baseado em fluxo existente e não exige que o conteúdo na memória não gerenciada seja copiado para o heap.
Observação
Esse tipo implementa a interface IDisposable, mas, na verdade, não tem todos os recursos para descarte. Isso significa que não é necessário descartá-lo chamando diretamente Dispose() ou usando um constructo de linguagem como using
(em C#) ou Using
(em Visual Basic).
Construtores
UnmanagedMemoryStream() |
Inicializa uma nova instância da classe UnmanagedMemoryStream. |
UnmanagedMemoryStream(Byte*, Int64) |
Inicializa uma nova instância da classe UnmanagedMemoryStream usando o tamanho da memória e o local especificados. |
UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess) |
Inicializa uma nova instância da classe UnmanagedMemoryStream usando o local, o tamanho da memória, a quantidade total de memória e os valores de acesso ao arquivo. |
UnmanagedMemoryStream(SafeBuffer, Int64, Int64) |
Inicializa uma nova instância da classe UnmanagedMemoryStream em um buffer seguro com deslocamento e comprimento especificados. |
UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess) |
Inicializa uma nova instância da classe UnmanagedMemoryStream em um buffer seguro com um deslocamento, tamanho e acesso a arquivos especificados. |
Propriedades
CanRead |
Obtém um valor que indica se um fluxo oferece suporte à leitura. |
CanSeek |
Obtém um valor que indica se um fluxo oferece suporte à busca. |
CanTimeout |
Obtém um valor que determina se o fluxo atual pode atingir o tempo limite. (Herdado de Stream) |
CanWrite |
Obtém um valor que indica se um fluxo oferece suporte à gravação. |
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 em um fluxo. |
Position |
Obtém ou define a posição atual em um fluxo. |
PositionPointer |
Obtém ou define um ponteiro de bytes em um fluxo com base na posição atual no fluxo. |
ReadTimeout |
Obtém ou define um valor, em milissegundos, que determina por quanto tempo o fluxo tentará realizar a leitura antes do tempo limite. (Herdado de Stream) |
WriteTimeout |
Obtém ou define um valor, em milissegundos, que determina por quanto tempo o fluxo tentará realizar a gravação antes do tempo limite. (Herdado de Stream) |
Métodos
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Inicia uma operação de leitura assíncrona. (Considere o uso de ReadAsync(Byte[], Int32, Int32) em seu lugar.) (Herdado de Stream) |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Inicia uma operação de gravação assíncrona. (Considere o uso de WriteAsync(Byte[], Int32, Int32) em seu lugar.) (Herdado de Stream) |
Close() |
Fecha o fluxo atual e libera todos os recursos (como soquetes e identificadores de arquivos) associados ao fluxo atual. Em vez de chamar esse método, verifique se o fluxo é descartado corretamente. (Herdado de Stream) |
CopyTo(Stream) |
Lê os bytes do fluxo atual e os grava em outro fluxo. Ambas as posições de fluxos são avançadas pelo número de bytes copiados. (Herdado de Stream) |
CopyTo(Stream, Int32) |
Lê os bytes do fluxo atual e os grava em outro fluxo usando um tamanho do buffer especificado. Ambas as posições de fluxos são avançadas pelo número de bytes copiados. (Herdado de Stream) |
CopyToAsync(Stream) |
Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo. Ambas as posições de fluxos são avançadas pelo número de bytes copiados. (Herdado de Stream) |
CopyToAsync(Stream, CancellationToken) |
Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo usando um token de cancelamento especificado. Ambas as posições de fluxos são avançadas pelo número de bytes copiados. (Herdado de Stream) |
CopyToAsync(Stream, Int32) |
Lê de maneira assíncrona os bytes do fluxo atual e os grava em outro fluxo usando um tamanho do buffer especificado. Ambas as posições de fluxos são avançadas pelo número de bytes copiados. (Herdado de Stream) |
CopyToAsync(Stream, Int32, CancellationToken) |
Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo usando um tamanho do buffer especificado e um token de cancelamento. Ambas as posições de fluxos são avançadas pelo número de bytes copiados. (Herdado de Stream) |
CreateObjRef(Type) |
Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
CreateWaitHandle() |
Obsoleto.
Obsoleto.
Obsoleto.
Aloca um objeto WaitHandle. (Herdado de Stream) |
Dispose() |
Libera todos os recursos usados pelo Stream. (Herdado de Stream) |
Dispose(Boolean) |
Libera os recursos não gerenciados usados pelo UnmanagedMemoryStream e opcionalmente libera os recursos gerenciados. |
DisposeAsync() |
Libera de forma assíncrona os recursos não gerenciados usados pelo Stream. (Herdado de Stream) |
EndRead(IAsyncResult) |
Espera a leitura assíncrona pendente ser concluída. (Considere o uso de ReadAsync(Byte[], Int32, Int32) em seu lugar.) (Herdado de Stream) |
EndWrite(IAsyncResult) |
Encerra uma operação de gravação assíncrona. (Considere o uso de WriteAsync(Byte[], Int32, Int32) em seu lugar.) (Herdado de Stream) |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
Flush() |
Substitui o método Flush() para que nenhuma ação seja executada. |
FlushAsync() |
Limpa de forma assíncrona todos os buffers nesse fluxo e faz com que os dados armazenados em buffer sejam gravados no dispositivo subjacente. (Herdado de Stream) |
FlushAsync(CancellationToken) |
Substitui o método FlushAsync(CancellationToken) para que a operação seja cancelada se especificado, mas nenhuma outra ação seja executada. |
FlushAsync(CancellationToken) |
Limpa todos os buffers nesse fluxo de forma assíncrona, faz com que os dados armazenados em buffer sejam gravados no dispositivo subjacente e monitora as solicitações de cancelamento. (Herdado de Stream) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetLifetimeService() |
Obsoleto.
Recupera o objeto de serviço de tempo de vida atual que controla a política de ciclo de vida para esta instância. (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 classe UnmanagedMemoryStream usando um ponteiro para um local de memória não gerenciada. |
Initialize(SafeBuffer, Int64, Int64, FileAccess) |
Inicializa uma nova instância da classe UnmanagedMemoryStream em um buffer seguro com um deslocamento, tamanho e acesso a arquivos especificados. |
InitializeLifetimeService() |
Obsoleto.
Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância. (Herdado de MarshalByRefObject) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto MarshalByRefObject atual. (Herdado de MarshalByRefObject) |
ObjectInvariant() |
Obsoleto.
Oferece suporte a um Contract. (Herdado de Stream) |
Read(Byte[], Int32, Int32) |
Lê o número de bytes especificado na matriz especificada. |
Read(Span<Byte>) |
Lê todos os bytes desse fluxo de memória não gerenciado no intervalo especificado de bytes. |
Read(Span<Byte>) |
Quando for substituído em uma classe derivada, lê uma sequência de bytes do fluxo atual e avança a posição dentro do fluxo até o número de bytes lidos. (Herdado de Stream) |
ReadAsync(Byte[], Int32, Int32) |
Lê uma sequência de bytes do fluxo atual de forma assíncrona e avança a posição no fluxo até o número de bytes lidos. (Herdado de Stream) |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Lê de forma assíncrona o número de bytes especificado na matriz especificada. |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Lê de forma assíncrona uma sequência de bytes do fluxo atual, avança a posição no fluxo até o número de bytes lidos e monitora as solicitações de cancelamento. (Herdado de Stream) |
ReadAsync(Memory<Byte>, CancellationToken) |
Lê de forma assíncrona os bytes de fluxo de memória não gerenciado na região de memória. |
ReadAsync(Memory<Byte>, CancellationToken) |
Lê de forma assíncrona uma sequência de bytes do fluxo atual, avança a posição no fluxo até o número de bytes lidos e monitora as solicitações de cancelamento. (Herdado de Stream) |
ReadAtLeast(Span<Byte>, Int32, Boolean) |
Lê pelo menos um número mínimo de bytes do fluxo atual e avança a posição dentro do fluxo pelo número de bytes lidos. (Herdado de Stream) |
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Lê de forma assíncrona pelo menos um número mínimo de bytes do fluxo atual, avança a posição dentro do fluxo pelo número de bytes lidos e monitora as solicitações de cancelamento. (Herdado de Stream) |
ReadByte() |
Lê um byte de um fluxo e avança a posição no fluxo em um byte ou retorna -1 caso esteja no final do fluxo. |
ReadExactly(Byte[], Int32, Int32) |
Lê |
ReadExactly(Span<Byte>) |
Lê bytes do fluxo atual e avança a posição dentro do fluxo até que o |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Lê |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Lê bytes de forma assíncrona do fluxo atual, avança a posição dentro do fluxo até que o |
Seek(Int64, SeekOrigin) |
Define a posição atual do fluxo atual como o valor determinado. |
SetLength(Int64) |
Define o comprimento de um fluxo como um valor especificado. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Write(Byte[], Int32, Int32) |
Grava um bloco de bytes no fluxo atual usando os dados de um buffer. |
Write(ReadOnlySpan<Byte>) |
Grava um bloco de bytes no fluxo de memória não gerenciado atual usando dados do intervalo de bytes fornecido. |
Write(ReadOnlySpan<Byte>) |
Quando for substituído em uma classe derivada, grava uma sequência de bytes no fluxo atual e avança a posição atual dentro desse fluxo até o número de bytes gravados. (Herdado de Stream) |
WriteAsync(Byte[], Int32, Int32) |
Grava assincronamente uma sequência de bytes no fluxo atual e avança a posição atual dentro desse fluxo no número de bytes gravados. (Herdado de Stream) |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Grava uma sequência de bytes no fluxo atual assincronamente, avança a posição atual dentro desse fluxo pelo número de bytes gravados e monitora as solicitações de cancelamento. |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Grava uma sequência de bytes no fluxo atual assincronamente, avança a posição atual dentro desse fluxo pelo número de bytes gravados e monitora as solicitações de cancelamento. (Herdado de Stream) |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Grava de forma assíncrona um intervalo de bytes no fluxo atual, avança a posição atual nesse fluxo até o número de bytes gravados e monitora as solicitações de cancelamento. |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Grava uma sequência de bytes no fluxo atual assincronamente, avança a posição atual dentro desse fluxo pelo número de bytes gravados e monitora as solicitações de cancelamento. (Herdado de Stream) |
WriteByte(Byte) |
Grava um byte na posição atual no fluxo de arquivos. |
Métodos de Extensão
CopyToAsync(Stream, PipeWriter, CancellationToken) |
Lê de forma assíncrona os bytes do Stream e grava-os no PipeWriter especificado usando um token de cancelamento especificado. |
AsInputStream(Stream) |
Converte um fluxo gerenciado no .NET para Aplicativos da Windows Store em um fluxo de entrada no Windows Runtime. |
AsOutputStream(Stream) |
Converte um fluxo gerenciado no .NET para Aplicativos da Windows Store em um fluxo de saída no Windows Runtime. |
AsRandomAccessStream(Stream) |
Converte o fluxo especificado em um fluxo de acesso aleatório. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Configura como as esperas nas tarefas retornadas de um descartável assíncrono são realizadas. |
Aplica-se a
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários