UnmanagedMemoryStream Klasa

Definicja

Ważne

Ten interfejs API nie jest zgodny ze specyfikacją CLS.

Zapewnia dostęp do niezarządzanych bloków pamięci z kodu zarządzanego.Provides access to unmanaged blocks of memory from managed code.

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
Dziedziczenie
UnmanagedMemoryStream
Dziedziczenie
UnmanagedMemoryStream
Pochodne
Atrybuty

Przykłady

Poniższy przykład kodu ilustruje sposób odczytu i zapisu w pamięci niezarządzanej przy użyciu UnmanagedMemoryStream klasy.The following code example demonstrates how to read from and write to unmanaged memory using the UnmanagedMemoryStream class. Blok pamięci niezarządzanej jest przypisywany i cofany przy użyciu Marshal klasy.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();
    }
}

Uwagi

Ta klasa obsługuje dostęp do pamięci niezarządzanej przy użyciu istniejącego modelu opartego na strumieniach i nie wymaga, aby zawartość pamięci niezarządzanej była kopiowana do sterty.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.

Uwaga

Ten typ implementuje IDisposable interfejs, ale nie ma faktycznie żadnych zasobów do usunięcia.This type implements the IDisposable interface, but does not actually have any resources to dispose. Oznacza to, że usuwanie go przez bezpośrednie wywoływanie Dispose() lub użycie konstrukcji języka, takiej jak using (w języku C#) lub Using (w Visual Basic) nie jest konieczne.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.

Konstruktory

UnmanagedMemoryStream()

Inicjuje nowe wystąpienie klasy UnmanagedMemoryStream.Initializes a new instance of the UnmanagedMemoryStream class.

UnmanagedMemoryStream(Byte*, Int64)

Inicjuje nowe wystąpienie UnmanagedMemoryStream klasy przy użyciu określonej lokalizacji i długości pamięci.Initializes a new instance of the UnmanagedMemoryStream class using the specified location and memory length.

UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)

Inicjuje nowe wystąpienie UnmanagedMemoryStream klasy przy użyciu określonej lokalizacji, długości pamięci, całkowitej ilości pamięci i wartości dostępu do pliku.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)

Inicjuje nowe wystąpienie UnmanagedMemoryStream klasy w bezpiecznym buforze o określonym przesunięciu i długości.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset and length.

UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess)

Inicjuje nowe wystąpienie UnmanagedMemoryStream klasy w bezpiecznym buforze o określonym przesunięciu, długości i dostępie do pliku.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset, length, and file access.

Właściwości

CanRead

Pobiera wartość wskazującą, czy strumień obsługuje odczytywanie.Gets a value indicating whether a stream supports reading.

CanSeek

Pobiera wartość wskazującą, czy strumień obsługuje wyszukiwanie.Gets a value indicating whether a stream supports seeking.

CanTimeout

Pobiera wartość określającą, czy bieżący strumień może przekroczyć limit czasu.Gets a value that determines whether the current stream can time out.

(Odziedziczone po Stream)
CanWrite

Pobiera wartość wskazującą, czy strumień obsługuje zapisywanie.Gets a value indicating whether a stream supports writing.

Capacity

Pobiera długość strumienia (rozmiar) lub łączną ilość pamięci przypisanej do strumienia (pojemność).Gets the stream length (size) or the total amount of memory assigned to a stream (capacity).

Length

Pobiera długość danych w strumieniu.Gets the length of the data in a stream.

Position

Pobiera lub ustawia bieżącą pozycję w strumieniu.Gets or sets the current position in a stream.

PositionPointer

Pobiera lub ustawia wskaźnik bajtów do strumienia na podstawie bieżącej pozycji w strumieniu.Gets or sets a byte pointer to a stream based on the current position in the stream.

ReadTimeout

Pobiera lub ustawia wartość (w milisekundach), która określa, jak długo strumień będzie próbować odczytać przed upływem limitu czasu.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Odziedziczone po Stream)
WriteTimeout

Pobiera lub ustawia wartość (w milisekundach), która określa, jak długo strumień podejmie próbę zapisu przed upływem limitu czasu.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Odziedziczone po Stream)

Metody

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

Rozpoczęcie asynchronicznej operacji odczytu.Begins an asynchronous read operation. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) zamiast niego).(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Odziedziczone po Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Rozpoczyna asynchroniczne operacje zapisu.Begins an asynchronous write operation. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast niego).(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Odziedziczone po Stream)
Close()

Zamyka bieżący strumień i zwalnia wszystkie zasoby (takie jak gniazda i uchwyty plików) skojarzone z bieżącym strumieniem.Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. Zamiast wywołania tej metody upewnij się, że strumień jest prawidłowo usunięty.Instead of calling this method, ensure that the stream is properly disposed.

(Odziedziczone po Stream)
CopyTo(Stream)

Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu.Reads the bytes from the current stream and writes them to another stream.

(Odziedziczone po Stream)
CopyTo(Stream, Int32)

Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Odziedziczone po Stream)
CopyToAsync(Stream)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Odziedziczone po Stream)
CopyToAsync(Stream, CancellationToken)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego tokenu anulowania.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Odziedziczone po Stream)
CopyToAsync(Stream, Int32)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Odziedziczone po Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu i tokenu anulowania.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

(Odziedziczone po Stream)
CreateObjRef(Type)

Tworzy obiekt, który zawiera wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikacji z obiektem zdalnym.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Odziedziczone po MarshalByRefObject)
CreateWaitHandle()
Nieaktualne.

Przydziela WaitHandle obiekt.Allocates a WaitHandle object.

(Odziedziczone po Stream)
Dispose()

Zwalnia wszelkie zasoby używane przez element Stream.Releases all resources used by the Stream.

(Odziedziczone po Stream)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element UnmanagedMemoryStream i opcjonalnie zwalnia zasoby zarządzane.Releases the unmanaged resources used by the UnmanagedMemoryStream and optionally releases the managed resources.

DisposeAsync()

Asynchronicznie zwalnia niezarządzane zasoby używane przez Stream .Asynchronously releases the unmanaged resources used by the Stream.

(Odziedziczone po Stream)
EndRead(IAsyncResult)

Czeka na zakończenie oczekujących asynchronicznych operacji odczytu.Waits for the pending asynchronous read to complete. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) zamiast niego).(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Odziedziczone po Stream)
EndWrite(IAsyncResult)

Zamyka asynchroniczne operacje zapisu.Ends an asynchronous write operation. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast niego).(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Odziedziczone po Stream)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
Flush()

Zastępuje Flush() metodę, tak aby nie była wykonywana żadna akcja.Overrides the Flush() method so that no action is performed.

FlushAsync()

Asynchronicznie czyści wszystkie bufory dla tego strumienia i powoduje, że wszystkie buforowane dane są zapisywane na podstawowym urządzeniu.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Odziedziczone po Stream)
FlushAsync(CancellationToken)

Zastępuje FlushAsync(CancellationToken) metodę, tak aby operacja została anulowana, jeśli została określona, ale nie jest wykonywana żadna inna akcja.Overrides the FlushAsync(CancellationToken) method so that the operation is cancelled if specified, but no other action is performed.

FlushAsync(CancellationToken)

Asynchronicznie czyści wszystkie bufory dla tego strumienia, powoduje, że wszystkie buforowane dane są zapisywane na podstawowym urządzeniu i monitoruje żądania anulowania.Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.

(Odziedziczone po Stream)
GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetLifetimeService()
Nieaktualne.

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Odziedziczone po MarshalByRefObject)
GetType()

Pobiera Type bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
Initialize(Byte*, Int64, Int64, FileAccess)

Inicjuje nowe wystąpienie UnmanagedMemoryStream klasy za pomocą wskaźnika do niezarządzanej lokalizacji pamięci.Initializes a new instance of the UnmanagedMemoryStream class by using a pointer to an unmanaged memory location.

Initialize(SafeBuffer, Int64, Int64, FileAccess)

Inicjuje nowe wystąpienie UnmanagedMemoryStream klasy w bezpiecznym buforze o określonym przesunięciu, długości i dostępie do pliku.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset, length, and file access.

InitializeLifetimeService()
Nieaktualne.

Uzyskuje obiekt usługi istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.Obtains a lifetime service object to control the lifetime policy for this instance.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy skróconą kopię bieżącego elementu Object .Creates a shallow copy of the current Object.

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy skróconą kopię bieżącego MarshalByRefObject obiektu.Creates a shallow copy of the current MarshalByRefObject object.

(Odziedziczone po MarshalByRefObject)
ObjectInvariant()
Nieaktualne.

Zapewnia pomoc techniczną dla programu Contract .Provides support for a Contract.

(Odziedziczone po Stream)
Read(Byte[], Int32, Int32)

Odczytuje określoną liczbę bajtów do określonej tablicy.Reads the specified number of bytes into the specified array.

Read(Span<Byte>)

Odczytuje wszystkie bajty tego niezarządzanego strumienia pamięci do określonego zakresu bajtów.Reads all the bytes of this unmanaged memory stream into the specified span of bytes.

Read(Span<Byte>)

Gdy jest zastępowany w klasie pochodnej, odczytuje sekwencję bajtów z bieżącego strumienia i przesuwa pozycję w strumieniu o liczbę odczytanych bajtów.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Odziedziczone po Stream)
ReadAsync(Byte[], Int32, Int32)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i przesuwa pozycję w strumieniu o liczbę odczytanych bajtów.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Odziedziczone po Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronicznie odczytuje określoną liczbę bajtów do określonej tablicy.Asynchronously reads the specified number of bytes into the specified array.

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

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, przesuwa pozycję w strumieniu o liczbę odczytanych bajtów i monitoruje żądania anulowania.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(Odziedziczone po Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Asynchronicznie odczytuje bajty niezarządzanego strumienia pamięci do regionu pamięci.Asynchronously reads the unmanaged memory stream bytes into the memory region.

ReadAsync(Memory<Byte>, CancellationToken)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, przesuwa pozycję w strumieniu o liczbę odczytanych bajtów i monitoruje żądania anulowania.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(Odziedziczone po Stream)
ReadByte()

Odczytuje bajt ze strumienia i przesuwa pozycję w strumieniu o jeden bajt lub zwraca wartość-1, jeśli na końcu strumienia.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)

Ustawia bieżącą pozycję bieżącego strumienia na daną wartość.Sets the current position of the current stream to the given value.

SetLength(Int64)

Ustawia długość strumienia do określonej wartości.Sets the length of a stream to a specified value.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)
Write(Byte[], Int32, Int32)

Zapisuje blok bajtów do bieżącego strumienia przy użyciu danych z bufora.Writes a block of bytes to the current stream using data from a buffer.

Write(ReadOnlySpan<Byte>)

Zapisuje blok bajtów do bieżącego niezarządzanego strumienia pamięci przy użyciu danych z podanego zakresu bajtów.Writes a block of bytes to the current unmanaged memory stream using data from the provided span of bytes.

Write(ReadOnlySpan<Byte>)

Gdy jest zastępowany w klasie pochodnej, zapisuje sekwencję bajtów do bieżącego strumienia i zwiększa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów.When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Odziedziczone po Stream)
WriteAsync(Byte[], Int32, Int32)

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia i przesuwa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Odziedziczone po Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przesuwa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów i monitoruje żądania anulowania.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(Byte[], Int32, Int32, CancellationToken)

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przesuwa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów i monitoruje żądania anulowania.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.

(Odziedziczone po Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchronicznie zapisuje zakres bajtów do bieżącego strumienia, zwiększa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów i monitoruje żądania anulowania.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.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przesuwa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów i monitoruje żądania anulowania.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.

(Odziedziczone po Stream)
WriteByte(Byte)

Zapisuje bajt w bieżącym położeniu w strumieniu pliku.Writes a byte to the current position in the file stream.

Jawne implementacje interfejsu

IDisposable.Dispose()

Zwalnia wszelkie zasoby używane przez element Stream.Releases all resources used by the Stream.

(Odziedziczone po Stream)

Metody rozszerzania

AsInputStream(Stream)

Konwertuje zarządzany strumień w programie .NET dla aplikacji do sklepu Windows na strumień wejściowy w środowisko wykonawcze systemu Windows.Converts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime.

AsOutputStream(Stream)

Konwertuje zarządzany strumień w programie .NET dla aplikacji ze sklepu Windows do strumienia wyjściowego w środowisko wykonawcze systemu Windows.Converts a managed stream in the .NET for Windows Store apps to an output stream in the Windows Runtime.

AsRandomAccessStream(Stream)

Konwertuje określony strumień na strumień o dostępie losowym.Converts the specified stream to a random access stream.

ConfigureAwait(IAsyncDisposable, Boolean)

Określa, jak oczekują oczekiwania na zadania zwracane z asynchronicznej operacji tworzenia.Configures how awaits on the tasks returned from an async disposable are performed.

Dotyczy