UnmanagedMemoryStream Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- Dziedziczenie
- Pochodne
- Atrybuty
Przykłady
W poniższym przykładzie kodu pokazano, jak odczytywać i zapisywać w niezarządzanej pamięci przy użyciu klasy UnmanagedMemoryStream. Blok niezarządzanej pamięci jest przydzielany i conięto przydział przy użyciu klasy Marshal.
// 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 stertki.
Nuta
Ten typ implementuje interfejs IDisposable, ale w rzeczywistości nie ma żadnych zasobów do usunięcia. Oznacza to, że usuwanie go bezpośrednio przez 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 nowe wystąpienie klasy UnmanagedMemoryStream przy użyciu określonej lokalizacji i długości pamięci. |
UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess) |
Inicjuje nowe wystąpienie klasy UnmanagedMemoryStream 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 klasy UnmanagedMemoryStream w bezpiecznym buforze z określonym przesunięciem i długością. |
UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess) |
Inicjuje nowe wystąpienie klasy UnmanagedMemoryStream 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 upływem 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 upływem limitu czasu. (Odziedziczone po Stream) |
Metody
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Rozpoczyna operację odczytu asynchronicznego. (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. Obie 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. Obie 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. Obie 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. Obie 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. Obie 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. Obie 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.
Przydziela obiekt WaitHandle. (Odziedziczone po Stream) |
Dispose() |
Zwalnia wszystkie zasoby używane przez Stream. (Odziedziczone po Stream) |
Dispose(Boolean) |
Zwalnia niezarządzane zasoby używane przez UnmanagedMemoryStream i opcjonalnie zwalnia zarządzane zasoby. |
DisposeAsync() |
Asynchronicznie zwalnia niezarządzane zasoby używane przez Stream. (Odziedziczone po Stream) |
EndRead(IAsyncResult) |
Czeka 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 określony obiekt jest równy bieżącemu obiektowi. (Odziedziczone po Object) |
Flush() |
Zastępuje metodę Flush(), tak aby żadna akcja nie została wykonana. |
FlushAsync() |
Asynchronicznie czyści wszystkie 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 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() |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
Initialize(Byte*, Int64, Int64, FileAccess) |
Inicjuje nowe wystąpienie klasy UnmanagedMemoryStream przy użyciu wskaźnika do niezarządzanej lokalizacji pamięci. |
Initialize(SafeBuffer, Int64, Int64, FileAccess) |
Inicjuje nowe wystąpienie klasy UnmanagedMemoryStream 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 Object. (Odziedziczone po Object) |
MemberwiseClone(Boolean) |
Tworzy płytkią kopię bieżącego obiektu MarshalByRefObject. (Odziedziczone po MarshalByRefObject) |
ObjectInvariant() |
Przestarzałe.
Zapewnia obsługę 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>) |
Gdy przesłonięta w klasie pochodnej, odczytuje sekwencję bajtów z bieżącego strumienia i przechodzi pozycję w strumieniu według liczby odczytanych bajtów. (Odziedziczone po Stream) |
ReadAsync(Byte[], Int32, Int32) |
Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i rozwija pozycję w strumieniu według liczby 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, rozwija pozycję w strumieniu według liczby odczytanych bajtów i monitoruje żądania anulowania. (Odziedziczone po Stream) |
ReadAsync(Memory<Byte>, CancellationToken) |
Asynchronicznie odczytuje niezarządzane bajty strumienia pamięci do regionu pamięci. |
ReadAsync(Memory<Byte>, CancellationToken) |
Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, rozwija pozycję w strumieniu według liczby 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 według liczby 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 rozwija pozycję w strumieniu według jednego bajtu lub zwraca -1, jeśli na końcu strumienia. |
ReadExactly(Byte[], Int32, Int32) |
Odczytuje |
ReadExactly(Span<Byte>) |
Odczytuje bajty z bieżącego strumienia i przesuwa pozycję w strumieniu do momentu wypełnienia |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronicznie odczytuje |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Asynchronicznie odczytuje bajty z bieżącego strumienia, przechodzi pozycję w strumieniu do momentu wypełnienia |
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 w bieżącym strumieniu 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 w bieżącym strumieniu, 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 w bieżącym strumieniu, 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, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania. |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Asynchronicznie zapisuje sekwencję bajtów w bieżącym strumieniu, 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
CopyToAsync(Stream, PipeWriter, CancellationToken) |
Asynchronicznie odczytuje bajty z Stream i zapisuje je w określonym PipeWriterprzy użyciu tokenu anulowania. |
AsInputStream(Stream) |
Konwertuje strumień zarządzany na platformie .NET dla aplikacji ze Sklepu Windows na strumień wejściowy w środowisku uruchomieniowym systemu Windows. |
AsOutputStream(Stream) |
Konwertuje strumień zarządzany na platformie .NET dla aplikacji ze Sklepu Windows na strumień wyjściowy w środowisku uruchomieniowym systemu Windows. |
AsRandomAccessStream(Stream) |
Konwertuje określony strumień na strumień dostępu losowego. |
ConfigureAwait(IAsyncDisposable, Boolean) |
Konfiguruje, w jaki sposób będą wykonywane oczekiwania na zadania zwrócone z asynchronicznego jednorazowego użytku. |