(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

UnmanagedMemoryStream-Klasse

Ermöglicht den Zugriff auf nicht verwaltete Speicherblöcke aus verwaltetem Code heraus.

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

public class UnmanagedMemoryStream : Stream

Der UnmanagedMemoryStream-Typ macht die folgenden Member verfügbar.

  NameBeschreibung
Geschützte MethodeUnmanagedMemoryStream()Initialisiert eine neue Instanz der UnmanagedMemoryStream-Klasse.
Öffentliche MethodeUnmanagedMemoryStream(Byte*, Int64)Initialisiert eine neue Instanz der UnmanagedMemoryStream-Klasse mit der angegebenen Position und Speicherlänge.
Öffentliche MethodeUnmanagedMemoryStream(SafeBuffer, Int64, Int64)Initialisiert eine neue Instanz der UnmanagedMemoryStream-Klasse in einem sicheren Puffer mit einem angegebenen Offset und einer angegebenen Länge.
Öffentliche MethodeUnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)Initialisiert eine neue Instanz der UnmanagedMemoryStream-Klasse mit der angegebenen Position, Speicherlänge, Gesamtspeichergröße und den Dateizugriffswerten.
Öffentliche MethodeUnmanagedMemoryStream(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.
Zum Seitenanfang

  NameBeschreibung
Öffentliche EigenschaftCanReadRuft einen Wert ab, der angibt, ob ein Stream Lesevorgänge unterstützt. (Überschreibt Stream.CanRead.)
Öffentliche EigenschaftCanSeekRuft einen Wert ab, der angibt, ob ein Stream Suchvorgänge unterstützt. (Überschreibt Stream.CanSeek.)
Öffentliche EigenschaftCanTimeoutRuft einen Wert ab, der bestimmt, ob für den aktuellen Stream ein Timeout möglich ist. (Von Stream geerbt.)
Öffentliche EigenschaftCanWriteRuft einen Wert ab, der angibt, ob ein Stream Schreibvorgänge unterstützt. (Überschreibt Stream.CanWrite.)
Öffentliche EigenschaftCapacityRuft die Streamlänge (Größe) oder die Gesamtgröße des einem Stream zugewiesenen Speichers (Kapazität) ab.
Öffentliche EigenschaftLengthRuft die Länge der Daten in einem Stream ab. (Überschreibt Stream.Length.)
Öffentliche EigenschaftPositionRuft die aktuelle Position in einem Stream ab oder legt diese fest. (Überschreibt Stream.Position.)
Öffentliche EigenschaftPositionPointerRuft einen Bytezeiger auf einen Stream auf Grundlage der aktuellen Position im Stream ab oder legt diesen fest.
Öffentliche EigenschaftReadTimeoutRuft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Lesevorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest. (Von Stream geerbt.)
Öffentliche EigenschaftWriteTimeoutRuft einen Wert in Millisekunden ab, der bestimmt, wie lange der Stream versucht, Schreibvorgänge durchzuführen, bevor ein Timeout auftritt, oder legt diesen fest. (Von Stream geerbt.)
Zum Seitenanfang

  NameBeschreibung
Öffentliche MethodeBeginReadBeginnt einen asynchronen Lesevorgang. (Verwenden Sie stattdessen die ReadAsync-Methode. Weitere Informationen finden Sie im Abschnitt "Hinweise".) (Von Stream geerbt.)
Öffentliche MethodeBeginWriteBeginnt einen asynchronen Schreibvorgang. (Verwenden Sie stattdessen WriteAsync. Weitere Informationen finden Sie im Abschnitt "Hinweise".) (Von Stream geerbt.)
Öffentliche MethodeCloseSchließt den aktuellen Stream und gibt alle dem aktuellen Stream zugeordneten Ressourcen frei (z. B. Sockets und Dateihandles). Anstatt diese Methode aufzurufen, stellen Sie sicher, dass der Stream ordnungsgemäß freigegeben wird. (Von Stream geerbt.)
Öffentliche MethodeCopyTo(Stream)Liest alle Bytes aus dem aktuellen Stream und schreibt sie in einen anderen Datenstrom. (Von Stream geerbt.)
Öffentliche MethodeCopyTo(Stream, Int32)Liest alles Bytes aus dem aktuellen Datenstrom und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Datenstrom. (Von Stream geerbt.)
Öffentliche MethodeCopyToAsync(Stream)Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie in einen anderen Stream. (Von Stream geerbt.)
Öffentliche MethodeCopyToAsync(Stream, Int32)Liest die Bytes asynchron aus dem aktuellen Stream und schreibt sie unter Verwendung einer angegebenen Puffergröße in einen anderen Stream. (Von Stream geerbt.)
Öffentliche MethodeCopyToAsync(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. (Von Stream geerbt.)
Öffentliche MethodeCreateObjRefErstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind. (Von MarshalByRefObject geerbt.)
Geschützte MethodeCreateWaitHandle Veraltet. Reserviert ein WaitHandle-Objekt. (Von Stream geerbt.)
Öffentliche MethodeDispose()Gibt sämtliche vom Stream verwendeten Ressourcen frei. (Von Stream geerbt.)
Geschützte MethodeDispose(Boolean)Gibt die vom UnmanagedMemoryStream verwendeten, nicht verwalteten Ressourcen und optional auch die verwalteten Ressourcen frei. (Überschreibt Stream.Dispose(Boolean).)
Öffentliche MethodeEndReadWartet, bis der ausstehende asynchrone Lesevorgang abgeschlossen ist. (Verwenden Sie stattdessen die ReadAsync-Methode. Weitere Informationen finden Sie im Abschnitt "Hinweise".) (Von Stream geerbt.)
Öffentliche MethodeEndWriteBeendet einen asynchronen Schreibvorgang. (Verwenden Sie stattdessen WriteAsync. Weitere Informationen finden Sie im Abschnitt "Hinweise".) (Von Stream geerbt.)
Öffentliche MethodeEquals(Object)Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist. (Von Object geerbt.)
Geschützte MethodeFinalize Gibt einem Objekt Gelegenheit, Ressourcen freizugeben und andere Bereinigungen durchzuführen, bevor es von der Garbage Collection freigegeben wird. (Von Object geerbt.)
Öffentliche MethodeFlushÜberschreibt die Flush-Methode, sodass keine Aktion durchgeführt wird. (Überschreibt Stream.Flush().)
Öffentliche MethodeFlushAsync()Löscht sämtliche Puffer für diesen Stream asynchron und veranlasst die Ausgabe aller gepufferten Daten an das zugrunde liegende Gerät. (Von Stream geerbt.)
Öffentliche MethodeFlushAsync(CancellationToken) (Überschreibt Stream.FlushAsync(CancellationToken).)
Öffentliche MethodeGetHashCodeFungiert als die Standardhashfunktion. (Von Object geerbt.)
Öffentliche MethodeGetLifetimeServiceRuft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert. (Von MarshalByRefObject geerbt.)
Öffentliche MethodeGetTypeRuft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Geschützte MethodeInitialize(Byte*, Int64, Int64, FileAccess)Initialisiert eine neue Instanz der UnmanagedMemoryStream-Klasse unter Verwendung eines Zeigers auf eine nicht verwaltete Speicheradresse.
Geschützte MethodeInitialize(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.
Öffentliche MethodeInitializeLifetimeServiceRuft ein Lebensdauerdienstobjekt ab, mit dem die Lebensdauerrichtlinien für diese Instanz gesteuert werden können. (Von MarshalByRefObject geerbt.)
Geschützte MethodeMemberwiseClone()Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Geschützte MethodeMemberwiseClone(Boolean)Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts. (Von MarshalByRefObject geerbt.)
Geschützte MethodeObjectInvariantInfrastruktur. Veraltet. Bietet Unterstützung für das Contract. (Von Stream geerbt.)
Öffentliche MethodeReadLiest die angegebene Anzahl von Bytes in das angegebene Array. (Überschreibt Stream.Read(Byte[], Int32, Int32).)
Öffentliche MethodeReadAsync(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. (Von Stream geerbt.)
Öffentliche MethodeReadAsync(Byte[], Int32, Int32, CancellationToken) (Überschreibt Stream.ReadAsync(Byte[], Int32, Int32, CancellationToken).)
Öffentliche MethodeReadByteLiest 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. (Überschreibt Stream.ReadByte().)
Öffentliche MethodeSeekLegt die aktuelle Position des aktuellen Streams auf den angegebenen Wert fest. (Überschreibt Stream.Seek(Int64, SeekOrigin).)
Öffentliche MethodeSetLengthLegt die Länge eines Streams auf einen angegebenen Wert fest. (Überschreibt Stream.SetLength(Int64).)
Öffentliche MethodeToStringGibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Von Object geerbt.)
Öffentliche MethodeWriteSchreibt einen Byteblock mit den Daten aus einem Puffer in den aktuellen Stream. (Überschreibt Stream.Write(Byte[], Int32, Int32).)
Öffentliche MethodeWriteAsync(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. (Von Stream geerbt.)
Öffentliche MethodeWriteAsync(Byte[], Int32, Int32, CancellationToken) (Überschreibt Stream.WriteAsync(Byte[], Int32, Int32, CancellationToken).)
Öffentliche MethodeWriteByteSchreibt ein Byte an die aktuelle Position im Dateistream. (Überschreibt Stream.WriteByte(Byte).)
Zum Seitenanfang

  NameBeschreibung
Öffentliche ErweiterungsmethodeAsInputStreamKonvertiert einen verwalteten Stream in .NET für Windows Store-Apps zu einem Eingabestream in Windows-Runtime. (Durch WindowsRuntimeStreamExtensions definiert.)
Öffentliche ErweiterungsmethodeAsOutputStreamKonvertiert einen verwalteten Stream in .NET für Windows Store-Apps zu einem Ausgabestream in Windows-Runtime. (Durch WindowsRuntimeStreamExtensions definiert.)
Zum Seitenanfang

Diese Klasse unterstützt den Zugriff auf nicht verwalteten Speicher mithilfe des vorhandenen streambasierten Modells. Der Inhalt des nicht verwalteten Speichers muss nicht in den Heap kopiert werden.

Wichtiger HinweisWichtig

Dieser Typ implementiert die IDisposable-Schnittstelle. Wenn die Verwendung des Typs haben, sollten Sie diesen direkt oder indirekt entweder freigeben. Um den Typ direkt zu löschen, rufen Sie die Dispose-Methode in einem try/catch-Block auf. So zeigen ihn indirekt freizugeben, verwenden Sie ein Sprachkonstrukt wie using (in C#) oder Using (in Visual Basic). Weitere Informationen finden Sie im Abschnitt "Verwenden eines Objekts, das Abschnitt IDisposable" im IDisposable-Schnittstellenthema implementiert.

Im folgenden Codebeispiel wird veranschaulicht, wie mit der UnmanagedMemoryStream-Klasse aus nicht verwaltetem Speicher gelesen und in diesen geschrieben wird. Die Belegung sowie das Aufheben der Belegung eines nicht verwalteten Speicherblocks erfolgt mit der Marshal-Klasse.



// 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();
    }
}


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft