UnmanagedMemoryStream Klasse

Definition

Wichtig

Diese API ist nicht CLS-kompatibel.

Ermöglicht den Zugriff auf nicht verwaltete Speicherblöcke aus verwaltetem Code heraus.Provides access to unmanaged blocks of memory from managed code.

public ref class UnmanagedMemoryStream : System::IO::Stream
[System.CLSCompliant(false)]
public class UnmanagedMemoryStream : System.IO.Stream
type UnmanagedMemoryStream = class
    inherit Stream
Public Class UnmanagedMemoryStream
Inherits Stream
Vererbung
UnmanagedMemoryStream
Abgeleitet
Attribute

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie mithilfe der UnmanagedMemoryStream -Klasse aus dem nicht verwalteten Speicher gelesen und in diesen geschrieben werden kann.The following code example demonstrates how to read from and write to unmanaged memory using the UnmanagedMemoryStream class. Ein Block von nicht verwaltetem Arbeitsspeicher wird mithilfe der-Klasse zugeordnet Marshal und die Zuordnung wird aufgehoben.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();
    }
}

Hinweise

Diese Klasse unterstützt den Zugriff auf nicht verwalteten Speicher mithilfe des vorhandenen streambasierten Modells und erfordert nicht, dass die Inhalte im nicht verwalteten Speicher in den Heap kopiert werden.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.

Hinweis

Dieser Typ implementiert die IDisposable-Schnittstelle, verfügt aber nicht über löschbare Ressourcen.This type implements the IDisposable interface, but does not actually have any resources to dispose. Dies bedeutet, dass es nicht nötig ist, ihn zu löschen, indem Sie Dispose() direkt aufrufen, oder indem Sie ein Sprachkonstrukt wie using (in C#) oder Using (in Visual Basic).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.

Konstruktoren

UnmanagedMemoryStream()

Initialisiert eine neue Instanz der UnmanagedMemoryStream-Klasse.Initializes a new instance of the UnmanagedMemoryStream class.

UnmanagedMemoryStream(Byte*, Int64)

Initialisiert eine neue Instanz der UnmanagedMemoryStream-Klasse mit der angegebenen Position und Speicherlänge.Initializes a new instance of the UnmanagedMemoryStream class using the specified location and memory length.

UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)

Initialisiert eine neue Instanz der UnmanagedMemoryStream-Klasse mit der angegebenen Position, Speicherlänge, Gesamtspeichergröße und den Dateizugriffswerten.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)

Initialisiert eine neue Instanz der UnmanagedMemoryStream-Klasse in einem sicheren Puffer mit einem angegebenen Offset und einer angegebenen Länge.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset and length.

UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess)

Initialisiert eine neue Instanz der UnmanagedMemoryStream-Klasse in einem sicheren Puffer mit einem angegebenen Offset, einer angegebenen Länge und angegebenem Dateizugriff.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset, length, and file access.

Eigenschaften

CanRead

Ruft einen Wert ab, der angibt, ob ein Stream Lesevorgänge unterstützt.Gets a value indicating whether a stream supports reading.

CanSeek

Ruft einen Wert ab, der angibt, ob ein Stream Suchvorgänge unterstützt.Gets a value indicating whether a stream supports seeking.

CanTimeout

Ruft einen Wert ab, der bestimmt, ob für den aktuellen Stream ein Timeout möglich ist.Gets a value that determines whether the current stream can time out.

(Geerbt von Stream)
CanWrite

Ruft einen Wert ab, der angibt, ob ein Stream Schreibvorgänge unterstützt.Gets a value indicating whether a stream supports writing.

Capacity

Ruft die Streamlänge (Größe) oder die Gesamtgröße des einem Stream zugewiesenen Speichers (Kapazität) ab.Gets the stream length (size) or the total amount of memory assigned to a stream (capacity).

Length

Ruft die Länge der Daten in einem Stream ab.Gets the length of the data in a stream.

Position

Ruft die aktuelle Position in einem Stream ab oder legt diese fest.Gets or sets the current position in a stream.

PositionPointer

Ruft einen Bytezeiger auf einen Stream auf Grundlage der aktuellen Position im Stream ab oder legt diesen fest.Gets or sets a byte pointer to a stream based on the current position in the stream.

ReadTimeout

Ruft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Lesevorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Geerbt von Stream)
WriteTimeout

Ruft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Schreibvorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Geerbt von Stream)

Methoden

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

Beginnt einen asynchronen Lesevorgang.Begins an asynchronous read operation. (Verwenden Sie stattdessen ReadAsync(Byte[], Int32, Int32).)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Geerbt von Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Beginnt einen asynchronen Schreibvorgang.Begins an asynchronous write operation. (Verwenden Sie stattdessen WriteAsync(Byte[], Int32, Int32).)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Geerbt von Stream)
Close()

Schließt den aktuellen Stream und gibt alle dem aktuellen Stream zugeordneten Ressourcen frei (z. B. Sockets und Dateihandles).Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. Anstatt diese Methode aufzurufen, stellen Sie sicher, dass der Stream ordnungsgemäß freigegeben wird.Instead of calling this method, ensure that the stream is properly disposed.

(Geerbt von Stream)
CopyTo(Stream)

Liest alle Bytes aus dem aktuellen Stream und schreibt sie in einen anderen Datenstrom.Reads the bytes from the current stream and writes them to another stream.

(Geerbt von Stream)
CopyTo(Stream, Int32)

Liest alles Bytes aus dem aktuellen Datenstrom und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Datenstrom.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Geerbt von Stream)
CopyToAsync(Stream)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie in einen anderen Stream.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Geerbt von Stream)
CopyToAsync(Stream, CancellationToken)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung eines angegebenen Abbruchtokens in einen anderen Stream.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Geerbt von Stream)
CopyToAsync(Stream, Int32)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Stream.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Geerbt von Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung einer angegebenen Puffergröße und eines Abbruchtokens in einen anderen Stream.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

(Geerbt von Stream)
CreateObjRef(Type)

Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Geerbt von MarshalByRefObject)
CreateWaitHandle()

Reserviert ein WaitHandle-Objekt.Allocates a WaitHandle object.

(Geerbt von Stream)
Dispose()

Gibt alle vom Stream verwendeten Ressourcen frei.Releases all resources used by the Stream.

(Geerbt von Stream)
Dispose(Boolean)

Gibt die von UnmanagedMemoryStream verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.Releases the unmanaged resources used by the UnmanagedMemoryStream and optionally releases the managed resources.

DisposeAsync()

Gibt die nicht verwalteten Ressourcen, die von der Stream verwendet werden, asynchron frei.Asynchronously releases the unmanaged resources used by the Stream.

(Geerbt von Stream)
EndRead(IAsyncResult)

Wartet, bis der ausstehende asynchrone Lesevorgang abgeschlossen ist.Waits for the pending asynchronous read to complete. (Verwenden Sie stattdessen ReadAsync(Byte[], Int32, Int32).)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Geerbt von Stream)
EndWrite(IAsyncResult)

Beendet einen asynchronen Schreibvorgang.Ends an asynchronous write operation. (Verwenden Sie stattdessen WriteAsync(Byte[], Int32, Int32).)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Geerbt von Stream)
Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
Flush()

Überschreibt die Flush()-Methode, sodass keine Aktion durchgeführt wird.Overrides the Flush() method so that no action is performed.

FlushAsync()

Löscht sämtliche Puffer für diesen Stream asynchron und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Geerbt von Stream)
FlushAsync(CancellationToken)

Überschreibt die FlushAsync(CancellationToken)-Methode. Der Vorgang wird abgebrochen, wenn dies angegeben wurde, ansonsten wird keine Aktion durchgeführt.Overrides the FlushAsync(CancellationToken) method so that the operation is cancelled if specified, but no other action is performed.

GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Geerbt von Object)
GetLifetimeService()

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Geerbt von MarshalByRefObject)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
Initialize(Byte*, Int64, Int64, FileAccess)

Initialisiert eine neue Instanz der UnmanagedMemoryStream-Klasse unter Verwendung eines Zeigers auf eine nicht verwaltete Speicheradresse.Initializes a new instance of the UnmanagedMemoryStream class by using a pointer to an unmanaged memory location.

Initialize(SafeBuffer, Int64, Int64, FileAccess)

Initialisiert eine neue Instanz der UnmanagedMemoryStream-Klasse in einem sicheren Puffer mit einem angegebenen Offset, einer angegebenen Länge und angegebenem Dateizugriff.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset, length, and file access.

InitializeLifetimeService()

Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab.Obtains a lifetime service object to control the lifetime policy for this instance.

(Geerbt von MarshalByRefObject)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts.Creates a shallow copy of the current MarshalByRefObject object.

(Geerbt von MarshalByRefObject)
ObjectInvariant()

Bietet Unterstützung für einen Contract.Provides support for a Contract.

(Geerbt von Stream)
Read(Byte[], Int32, Int32)

Liest die angegebene Anzahl von Bytes in das angegebene Array.Reads the specified number of bytes into the specified array.

Read(Span<Byte>)

Liest alle Bytes dieses nicht verwalteten Arbeitsspeicherstreams in die angegebene Spanne von Bytes.Reads all the bytes of this unmanaged memory stream into the specified span of bytes.

ReadAsync(Byte[], Int32, Int32)

Liest eine Bytesequenz asynchron aus dem aktuellen Stream und setzt die Position in diesem Stream um die Anzahl der gelesenen Bytes nach vorn.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Geerbt von Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Liest die angegebene Anzahl von Bytes asynchron in das angegebene Array.Asynchronously reads the specified number of bytes into the specified array.

ReadAsync(Memory<Byte>, CancellationToken)

Liest die Bytes des nicht verwalteten Arbeitsspeicherstreams asynchron in den Arbeitsspeicherbereich.Asynchronously reads the unmanaged memory stream bytes into the memory region.

ReadByte()

Liest ein Byte aus einem Stream und erhöht die Position im Stream um ein Byte, oder gibt -1 zurück, wenn das Ende des Streams erreicht ist.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)

Legt die aktuelle Position des aktuellen Streams auf den angegebenen Wert fest.Sets the current position of the current stream to the given value.

SetLength(Int64)

Legt die Länge eines Streams auf einen angegebenen Wert fest.Sets the length of a stream to a specified value.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)
Write(Byte[], Int32, Int32)

Schreibt einen Byteblock mit den Daten aus einem Puffer in den aktuellen Stream.Writes a block of bytes to the current stream using data from a buffer.

Write(ReadOnlySpan<Byte>)

Schreibt einen Block von Bytes in den aktuellen nicht verwalteten Arbeitsspeicherstream, wobei Daten aus der angegebenen Spanne von Bytes verwendet werden.Writes a block of bytes to the current unmanaged memory stream using data from the provided span of bytes.

WriteAsync(Byte[], Int32, Int32)

Schreibt eine Bytesequenz asynchron in den aktuellen Stream und setzt die aktuelle Position in diesem Stream um die Anzahl der geschriebenen Bytes nach vorn.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Geerbt von Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Schreibt beim Überschreiben in einer abgeleiteten Klasse eine Folge von Bytes asynchron in den aktuellen Stream und erhöht die aktuelle Position im Stream um die Anzahl der geschriebenen Bytes und überwacht Abbruchanforderungen.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(ReadOnlyMemory<Byte>, CancellationToken)

Schreibt eine Spanne von Bytes asynchron in den aktuellen Stream, erhöht die aktuelle Position innerhalb dieses Streams um die Anzahl der geschriebenen Bytes und überwacht Abbruchanforderungen.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.

WriteByte(Byte)

Schreibt ein Byte an die aktuelle Position im Dateistream.Writes a byte to the current position in the file stream.

Explizite Schnittstellenimplementierungen

IDisposable.Dispose()

Gibt alle vom Stream verwendeten Ressourcen frei.Releases all resources used by the Stream.

(Geerbt von Stream)

Erweiterungsmethoden

AsInputStream(Stream)

Konvertiert einen verwalteten Stream in .NET für Microsoft Store-Apps in einen Eingabestream in der Windows-Runtime.Converts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime.

AsOutputStream(Stream)

Konvertiert einen verwalteten Stream in .NET für Microsoft Store-Apps in einen Ausgabestream in der Windows-Runtime.Converts a managed stream in the .NET for Windows Store apps to an output stream in the Windows Runtime.

AsRandomAccessStream(Stream)

Konvertiert den angegebenen Stream in einen Random-Access-Stream.Converts the specified stream to a random access stream.

Gilt für: