Este artigo foi traduzido por máquina. Para visualizar o arquivo em inglês, marque a caixa de seleção Inglês. Você também pode exibir o texto Em inglês em uma janela pop-up, movendo o ponteiro do mouse sobre o texto.
Tradução
Inglês

Classe UnmanagedMemoryStream

 

Fornece acesso aos blocos de memória não gerenciados a partir de código gerenciado.

Namespace:   System.IO
Assembly:  mscorlib (em mscorlib.dll)

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

public class UnmanagedMemoryStream : Stream

NomeDescrição
System_CAPS_protmethodUnmanagedMemoryStream()

Inicializa uma nova instância da classe UnmanagedMemoryStream.

System_CAPS_pubmethodUnmanagedMemoryStream(Byte*, Int64)

Inicializa uma nova instância da classe UnmanagedMemoryStream usando o tamanho da memória e o local especificados.

System_CAPS_pubmethodUnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)

Inicializa uma nova instância de UnmanagedMemoryStream classe usando o local especificado, o comprimento de memória, a quantidade total de memória e valores de acesso de arquivo.

System_CAPS_pubmethodUnmanagedMemoryStream(SafeBuffer, Int64, Int64)

Inicializa uma nova instância de UnmanagedMemoryStream classe em um buffer de seguro com um deslocamento especificado e o comprimento.

System_CAPS_pubmethodUnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess)

Inicializa uma nova instância de UnmanagedMemoryStream classe em um buffer de seguro com um deslocamento especificado, comprimento e acesso a arquivos.

NomeDescrição
System_CAPS_pubpropertyCanRead

Obtém um valor que indica se um fluxo oferece suporte à leitura.(Substitui o Stream.CanRead.)

System_CAPS_pubpropertyCanSeek

Obtém um valor que indica se um fluxo oferece suporte à busca.(Substitui o Stream.CanSeek.)

System_CAPS_pubpropertyCanTimeout

Obtém um valor que determina se o fluxo atual pode atingir o tempo limite.(Herdado de Stream.)

System_CAPS_pubpropertyCanWrite

Obtém um valor que indica se um fluxo oferece suporte à gravação.(Substitui o Stream.CanWrite.)

System_CAPS_pubpropertyCapacity

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

System_CAPS_pubpropertyLength

Obtém o comprimento dos dados em um fluxo.(Substitui o Stream.Length.)

System_CAPS_pubpropertyPosition

Obtém ou define a posição atual em um fluxo.(Substitui o Stream.Position.)

System_CAPS_pubpropertyPositionPointer

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

System_CAPS_pubpropertyReadTimeout

Obtém ou define um valor, em milissegundos, que determina quanto tempo o fluxo tentará realizar a leitura antes do tempo limite.(Herdado de Stream.)

System_CAPS_pubpropertyWriteTimeout

Obtém ou define um valor, em milissegundos, que determina quanto tempo o fluxo tentará realizar a gravação antes do tempo limite.(Herdado de Stream.)

NomeDescrição
System_CAPS_pubmethodBeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Inicia uma operação de leitura assíncrona. (Considere o uso de ReadAsync; consulte a seção Comentários.)(Herdado de Stream.)

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

Inicia uma operação de gravação assíncrona. (Considere usar WriteAsync; consulte a seção Comentários.)(Herdado de Stream.)

System_CAPS_pubmethodClose()

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.)

System_CAPS_pubmethodCopyTo(Stream)

Lê os bytes do fluxo atual e os grava em outro fluxo.(Herdado de Stream.)

System_CAPS_pubmethodCopyTo(Stream, Int32)

Lê os bytes do fluxo atual e os grava em outro fluxo usando um tamanho do buffer especificado.(Herdado de Stream.)

System_CAPS_pubmethodCopyToAsync(Stream)

Lê de forma assíncrona os bytes do fluxo atual e os grava em outro fluxo.(Herdado de Stream.)

System_CAPS_pubmethodCopyToAsync(Stream, Int32)

Lê de maneira assíncrona os bytes do fluxo atual e os grava em outro fluxo usando um tamanho do buffer especificado.(Herdado de Stream.)

System_CAPS_pubmethodCopyToAsync(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.(Herdado de Stream.)

System_CAPS_pubmethodCreateObjRef(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.)

System_CAPS_protmethodCreateWaitHandle()

Obsoleto. Aloca um objeto WaitHandle.(Herdado de Stream.)

System_CAPS_pubmethodDispose()

Libera todos os recursos usados pelo Stream.(Herdado de Stream.)

System_CAPS_protmethodDispose(Boolean)

Libera os recursos não gerenciados usados pelo UnmanagedMemoryStream e opcionalmente libera os recursos gerenciados.(Substitui o Stream.Dispose(Boolean).)

System_CAPS_pubmethodEndRead(IAsyncResult)

Espera a leitura assíncrona pendente ser concluída. (Considere o uso de ReadAsync, consulte a seção Comentários.)(Herdado de Stream.)

System_CAPS_pubmethodEndWrite(IAsyncResult)

Encerra uma operação de gravação assíncrona. (Considere usar WriteAsync; consulte a seção Comentários.)(Herdado de Stream.)

System_CAPS_pubmethodEquals(Object)

Determina se o objeto especificado é igual ao objeto atual.(Herdado de Object.)

System_CAPS_protmethodFinalize()

Permite que um objeto tente liberar recursos e executar outras operações de limpeza antes de ser recuperado pela coleta de lixo.(Herdado de Object.)

System_CAPS_pubmethodFlush()

Substitui o Flush método para que nenhuma ação é executada.(Substitui o Stream.Flush().)

System_CAPS_pubmethodFlushAsync()

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.)

System_CAPS_pubmethodFlushAsync(CancellationToken)

Substitui o Stream.FlushAsync método para que a operação será cancelada se especificado, mas nenhuma outra ação é executada.

Disponível a partir do .NET Framework 4.6(Substitui o Stream.FlushAsync(CancellationToken).)

System_CAPS_pubmethodGetHashCode()

Serve como a função de hash padrão.(Herdado de Object.)

System_CAPS_pubmethodGetLifetimeService()

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.)

System_CAPS_pubmethodGetType()

Obtém o Type da instância atual.(Herdado de Object.)

System_CAPS_protmethodInitialize(Byte*, Int64, Int64, FileAccess)

Inicializa uma nova instância de UnmanagedMemoryStream classe usando um ponteiro para um local de memória não gerenciada.

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

System_CAPS_pubmethodInitializeLifetimeService()

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.)

System_CAPS_protmethodMemberwiseClone()

Cria uma cópia superficial do Object atual.(Herdado de Object.)

System_CAPS_protmethodMemberwiseClone(Boolean)

Cria uma cópia superficial do objeto MarshalByRefObject atual.(Herdado de MarshalByRefObject.)

System_CAPS_protmethodObjectInvariant()

Obsoleto. Esta API dá suporte à infraestrutura produto e não se destina a ser usada diretamente do seu código. Fornece suporte para um Contract.(Herdado de Stream.)

System_CAPS_pubmethodRead(Byte[], Int32, Int32)

Lê o número de bytes especificado na matriz especificada.(Substitui o Stream.Read(Byte[], Int32, Int32).)

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

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

Assincronamente lê o número especificado de bytes na matriz especificada.

Disponível a partir do .NET Framework 4.6(Substitui o Stream.ReadAsync(Byte[], Int32, Int32, CancellationToken).)

System_CAPS_pubmethodReadByte()

Lê um byte de um fluxo e avança a posição dentro do fluxo por um byte ou retorna -1 se estiver no final do fluxo.(Substitui o Stream.ReadByte().)

System_CAPS_pubmethodSeek(Int64, SeekOrigin)

Define a posição atual do fluxo atual como o valor especificado.(Substitui o Stream.Seek(Int64, SeekOrigin).)

System_CAPS_pubmethodSetLength(Int64)

Define o comprimento de um fluxo com um valor especificado.(Substitui o Stream.SetLength(Int64).)

System_CAPS_pubmethodToString()

Retorna uma cadeia de caracteres que representa o objeto atual.(Herdado de Object.)

System_CAPS_pubmethodWrite(Byte[], Int32, Int32)

Grava um bloco de bytes no fluxo atual usando dados de um buffer.(Substitui o Stream.Write(Byte[], Int32, Int32).)

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

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

Grava uma sequência de bytes no fluxo atual assincronamente, avança a posição atual dentro do fluxo pelo número de bytes gravados e monitora as solicitações de cancelamento.

Disponível a partir do .NET Framework 4.6(Substitui o Stream.WriteAsync(Byte[], Int32, Int32, CancellationToken).)

System_CAPS_pubmethodWriteByte(Byte)

Grava um byte na posição atual no fluxo de arquivos.(Substitui o Stream.WriteByte(Byte).)

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.

System_CAPS_importantImportante

This type implements the T:System.IDisposable interface. When you have finished using the type, you should dispose of it either directly or indirectly. To dispose of the type directly, call its M:System.IDisposable.Dispose method in a try/catch block. To dispose of it indirectly, use a language construct such as using (in C#) or Using (in Visual Basic). For more information, see the “Using an Object that Implements IDisposable” section in the T:System.IDisposable interface topic.

The following code example demonstrates how to read from and write to unmanaged memory using the T:System.IO.UnmanagedMemoryStream class. A block of unmanaged memory is allocated and de-allocated using the T:System.Runtime.InteropServices.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();
    }
}

Plataforma Universal do Windows
Disponível desde 10
.NET Framework
Disponível desde 2.0
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0

Quaisquer membros estáticos públicos ( Compartilhado no Visual Basic) desse tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Retornar ao início
Mostrar: