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.

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

W poniższym przykładzie kodu pokazano, jak odczytywać dane z niezarządzanej pamięci i zapisywać je przy UnmanagedMemoryStream użyciu klasy . Blok niezarządzanej pamięci jest przydzielany i delokowany przy użyciu Marshal klasy .


// 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 niezarządzanej pamięci przy użyciu istniejącego modelu opartego na strumieniu i nie wymaga skopiowania zawartości niezarządzanej pamięci do sterta.

Uwaga

Ten typ implementuje IDisposable interfejs, ale w rzeczywistości nie ma żadnych zasobów do usunięcia. Oznacza to, że dysponowanie go przez bezpośrednie wywołanie Dispose() lub użycie konstrukcji językowej, takiej jak using (w języku C#) lub Using (w Visual Basic) nie jest konieczne.

Konstruktory

UnmanagedMemoryStream()

Inicjuje nowe wystąpienie klasy UnmanagedMemoryStream.

UnmanagedMemoryStream(Byte*, Int64)

Inicjuje UnmanagedMemoryStream nowe wystąpienie klasy przy użyciu określonej lokalizacji i długości pamięci.

UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)

Inicjuje UnmanagedMemoryStream nowe wystąpienie klasy przy użyciu określonej lokalizacji, długości pamięci, całkowitej ilości pamięci i wartości dostępu do plików.

UnmanagedMemoryStream(SafeBuffer, Int64, Int64)

Inicjuje nowe wystąpienie UnmanagedMemoryStream klasy w bezpiecznym buforze z określonym przesunięciem i długością.

UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess)

Inicjuje nowe wystąpienie UnmanagedMemoryStream klasy w bezpiecznym buforze z określonym przesunięciem, długością i dostępem do plików.

Właściwości

CanRead

Pobiera wartość wskazującą, czy strumień obsługuje odczyt.

CanSeek

Pobiera wartość wskazującą, czy strumień obsługuje wyszukiwanie.

CanTimeout

Pobiera wartość określającą, czy bieżący strumień może upłynął limit czasu.

(Odziedziczone po Stream)
CanWrite

Pobiera wartość wskazującą, czy strumień obsługuje zapisywanie.

Capacity

Pobiera długość strumienia (rozmiar) lub łączną ilość pamięci przypisanej do strumienia (pojemność).

Length

Pobiera długość danych w strumieniu.

Position

Pobiera lub ustawia bieżącą pozycję w strumieniu.

PositionPointer

Pobiera lub ustawia wskaźnik bajtów na strumień na podstawie bieżącej pozycji w strumieniu.

ReadTimeout

Pobiera lub ustawia wartość w milisekundach, która określa, jak długo strumień będzie próbował odczytać przed przekroczeniem limitu czasu.

(Odziedziczone po Stream)
WriteTimeout

Pobiera lub ustawia wartość w milisekundach, która określa, jak długo strumień będzie próbował zapisać przed przekroczeniem limitu czasu.

(Odziedziczone po Stream)

Metody

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

Rozpoczyna asynchroniczną operację odczytu. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) zamiast tego).

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

Rozpoczyna asynchroniczną operację zapisu. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast tego).

(Odziedziczone po Stream)
Close()

Zamyka bieżący strumień i zwalnia wszystkie zasoby (takie jak gniazda i dojścia plików) skojarzone z bieżącym strumieniem. Zamiast wywoływać tę metodę, upewnij się, że strumień jest prawidłowo usuwany.

(Odziedziczone po Stream)
CopyTo(Stream)

Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(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. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(Odziedziczone po Stream)
CopyToAsync(Stream)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(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. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(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. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(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. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(Odziedziczone po Stream)
CreateObjRef(Type)

Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym.

(Odziedziczone po MarshalByRefObject)
CreateWaitHandle()
Przestarzałe.
Przestarzałe.
Przestarzałe.

WaitHandle Przydziela obiekt.

(Odziedziczone po Stream)
Dispose()

Zwalnia wszelkie zasoby używane przez element Stream.

(Odziedziczone po Stream)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element UnmanagedMemoryStream i opcjonalnie zwalnia zasoby zarządzane.

DisposeAsync()

Asynchronicznie zwalnia niezarządzane zasoby używane przez program Stream.

(Odziedziczone po Stream)
EndRead(IAsyncResult)

Oczekuje na ukończenie oczekującego odczytu asynchronicznego. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) zamiast tego).

(Odziedziczone po Stream)
EndWrite(IAsyncResult)

Kończy asynchroniczną operację zapisu. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast tego).

(Odziedziczone po Stream)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
Flush()

Zastępuje metodę tak, aby żadna Flush() akcja nie została wykonana.

FlushAsync()

Asynchronicznie czyści wszystkie bufory dla tego strumienia i powoduje zapisanie wszystkich buforowanych danych na urządzeniu bazowym.

(Odziedziczone po Stream)
FlushAsync(CancellationToken)

Zastępuje metodę FlushAsync(CancellationToken) tak, aby operacja została anulowana, jeśli została określona, ale nie jest wykonywana żadna inna akcja.

FlushAsync(CancellationToken)

Asynchronicznie czyści wszystkie bufory dla tego strumienia, powoduje zapisanie wszystkich buforowanych danych na urządzeniu źródłowym i monitorowanie żądań anulowania.

(Odziedziczone po Stream)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetLifetimeService()
Przestarzałe.

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

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

Inicjuje UnmanagedMemoryStream nowe wystąpienie klasy przy użyciu wskaźnika do niezarządzanej lokalizacji pamięci.

Initialize(SafeBuffer, Int64, Int64, FileAccess)

Inicjuje nowe wystąpienie UnmanagedMemoryStream klasy w bezpiecznym buforze z określonym przesunięciem, długością i dostępem do plików.

InitializeLifetimeService()
Przestarzałe.

Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

(Odziedziczone po MarshalByRefObject)
ObjectInvariant()
Przestarzałe.

Zapewnia obsługę programu Contract.

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

Odczytuje określoną liczbę bajtów do określonej tablicy.

Read(Span<Byte>)

Odczytuje wszystkie bajty tego niezarządzanego strumienia pamięci do określonego zakresu bajtów.

Read(Span<Byte>)

Po zastąpieniu w klasie pochodnej odczytuje sekwencję bajtów z bieżącego strumienia i przesuwa pozycję w strumieniu przez liczbę odczytanych bajtów.

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

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i rozwija pozycję w strumieniu przez liczbę odczytanych bajtów.

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

Asynchronicznie odczytuje określoną liczbę bajtów do określonej tablicy.

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.

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

Asynchronicznie odczytuje niezarządzany strumień pamięci bajtów do regionu pamięci.

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.

(Odziedziczone po Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Odczytuje co najmniej minimalną liczbę bajtów z bieżącego strumienia i rozwija pozycję w strumieniu przez liczbę odczytanych bajtów.

(Odziedziczone po Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Asynchronicznie odczytuje co najmniej minimalną liczbę bajtów z bieżącego strumienia, zwiększa pozycję w strumieniu przez liczbę odczytanych bajtów i monitoruje żądania anulowania.

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

ReadExactly(Byte[], Int32, Int32)

Odczytuje count liczbę bajtów z bieżącego strumienia i przesuwa pozycję w strumieniu.

(Odziedziczone po Stream)
ReadExactly(Span<Byte>)

Odczytuje bajty z bieżącego strumienia i przesuwa pozycję w strumieniu do buffer momentu wypełnienia.

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

Asynchronicznie odczytuje count liczbę bajtów z bieżącego strumienia, zwiększa pozycję w strumieniu i monitoruje żądania anulowania.

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

Asynchronicznie odczytuje bajty z bieżącego strumienia, przesuwa pozycję w strumieniu do buffer momentu wypełnienia i monitoruje żądania anulowania.

(Odziedziczone po Stream)
Seek(Int64, SeekOrigin)

Ustawia bieżące położenie bieżącego strumienia na daną wartość.

SetLength(Int64)

Ustawia długość strumienia na określoną wartość.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

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

Zapisuje blok bajtów do bieżącego strumienia przy użyciu danych z buforu.

Write(ReadOnlySpan<Byte>)

Zapisuje blok bajtów do bieżącego niezarządzanego strumienia pamięci przy użyciu danych z podanego zakresu bajtów.

Write(ReadOnlySpan<Byte>)

Po zastąpieniu w klasie pochodnej zapisuje sekwencję bajtów do bieżącego strumienia i przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów.

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

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia i przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów.

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

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania.

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

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania.

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

Asynchronicznie zapisuje zakres bajtów w bieżącym strumieniu, zwiększa bieżące położenie w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania.

(Odziedziczone po Stream)
WriteByte(Byte)

Zapisuje bajt do bieżącej pozycji w strumieniu plików.

Metody rozszerzania

AsInputStream(Stream)

Konwertuje strumień zarządzany na platformie .NET dla aplikacji ze Sklepu Windows na strumień wejściowy w środowisko wykonawcze systemu Windows.

AsOutputStream(Stream)

Konwertuje strumień zarządzany na platformie .NET dla aplikacji ze Sklepu Windows na strumień wyjściowy w środowisko wykonawcze systemu Windows.

AsRandomAccessStream(Stream)

Konwertuje określony strumień na strumień o dostępie losowym.

ConfigureAwait(IAsyncDisposable, Boolean)

Konfiguruje sposób oczekiwania na zadania zwracane z jednorazowego użytku asynchronicznego.

Dotyczy