UnmanagedMemoryStream Třída

Definice

Důležité

Toto rozhraní API neodpovídá specifikaci CLS.

Poskytuje přístup k nespravovaným blokům paměti ze spravovaného kódu.

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
Dědičnost
UnmanagedMemoryStream
Dědičnost
UnmanagedMemoryStream
Odvozené
Atributy

Příklady

Následující příklad kódu ukazuje, jak číst z a zapisovat do nespravované paměti pomocí UnmanagedMemoryStream třídy. Blok nespravované paměti se přidělí a zruší přidělení pomocí Marshal třídy.


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

Poznámky

Tato třída podporuje přístup k nespravované paměti pomocí existujícího modelu založeného na streamu a nevyžaduje zkopírování obsahu v nespravované paměti do haldy.

Poznámka

Tento typ implementuje rozhraní, ale ve skutečnosti IDisposable nemá žádné prostředky k uvolnění. To znamená, že jeho vystavení přímého volání nebo pomocí jazykového konstruktoru, jako Dispose() using je (v jazyce C#) Using nebo (v Visual Basic), není nezbytné.

Konstruktory

UnmanagedMemoryStream()

Inicializuje novou instanci UnmanagedMemoryStream třídy.

UnmanagedMemoryStream(Byte*, Int64)

Inicializuje novou instanci UnmanagedMemoryStream třídy pomocí zadaného umístění a délky paměti.

UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)

Inicializuje novou instanci třídy pomocí zadaného UnmanagedMemoryStream umístění, délky paměti, celkového množství paměti a hodnot přístupu k souboru.

UnmanagedMemoryStream(SafeBuffer, Int64, Int64)

Inicializuje novou instanci UnmanagedMemoryStream třídy v bezpečné vyrovnávací paměti se zadaným posunem a délkou.

UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess)

Inicializuje novou instanci UnmanagedMemoryStream třídy v bezpečné vyrovnávací paměti se zadaným posunem, délkou a přístupem k souboru.

Vlastnosti

CanRead

Získá hodnotu označující, zda datový proud podporuje čtení.

CanSeek

Získá hodnotu označující, zda datový proud podporuje hledání.

CanTimeout

Získá hodnotu, která určuje, zda aktuální datový proud může časový limit.

(Zděděno od Stream)
CanWrite

Získá hodnotu označující, zda datový proud podporuje zápis.

Capacity

Získá délku (velikost) datového proudu nebo celkovou velikost paměti přiřazenou datovému proudu (kapacitě).

Length

Získá délku dat v datovém proudu.

Position

Získá nebo nastaví aktuální pozici ve streamu.

PositionPointer

Získá nebo nastaví ukazatel bajtu na datový proud na základě aktuální pozice v datovém proudu.

ReadTimeout

Získá nebo nastaví hodnotu v milisekundách, která určuje, jak dlouho se datový proud pokusí číst před časovým limitem.

(Zděděno od Stream)
WriteTimeout

Získá nebo nastaví hodnotu v milisekundách, která určuje, jak dlouho se datový proud před vypršením časového limitu pokusí zapisovat.

(Zděděno od Stream)

Metody

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

Zahájí asynchronní operaci čtení. (Zvažte místo toho ReadAsync(Byte[], Int32, Int32) použití .)

(Zděděno od Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Zahájí asynchronní operaci zápisu. (Zvažte místo toho WriteAsync(Byte[], Int32, Int32) použití .)

(Zděděno od Stream)
Close()

Zavře aktuální datový proud a uvolní všechny prostředky (například sokety a popisovače souborů) přidružené k aktuálnímu datovému proudu. Místo volání této metody se ujistěte, že je datový proud správně odstraněn.

(Zděděno od Stream)
CopyTo(Stream)

Přečte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu.

(Zděděno od Stream)
CopyTo(Stream, Int32)

Přečte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti.

(Zděděno od Stream)
CopyToAsync(Stream)

Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu.

(Zděděno od Stream)
CopyToAsync(Stream, CancellationToken)

Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadaného tokenu zrušení.

(Zděděno od Stream)
CopyToAsync(Stream, Int32)

Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti.

(Zděděno od Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti a tokenu zrušení.

(Zděděno od Stream)
CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru používaného ke komunikaci se vzdáleným objektem.

(Zděděno od MarshalByRefObject)
CreateWaitHandle()
Zastaralé.
Zastaralé.

Přidělí WaitHandle objekt .

(Zděděno od Stream)
Dispose()

Uvolní všechny prostředky používané v Stream .

(Zděděno od Stream)
Dispose(Boolean)

Uvolní nespravované prostředky používané a UnmanagedMemoryStream volitelně uvolní spravované prostředky.

DisposeAsync()

Asynchronně uvolní nespravované prostředky používané objektem Stream .

(Zděděno od Stream)
EndRead(IAsyncResult)

Čeká na dokončení čekajícího asynchronního čtení. (Zvažte místo toho ReadAsync(Byte[], Int32, Int32) použití .)

(Zděděno od Stream)
EndWrite(IAsyncResult)

Ukončí asynchronní operaci zápisu. (Zvažte místo toho WriteAsync(Byte[], Int32, Int32) použití .)

(Zděděno od Stream)
Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
Flush()

Přepíše metodu Flush() tak, aby nebyla provedena žádná akce.

FlushAsync()

Asynchronně vymaže všechny vyrovnávací paměti pro tento datový proud a způsobí zápis všech dat ve vyrovnávací paměti do základního zařízení.

(Zděděno od Stream)
FlushAsync(CancellationToken)

Přepíše metodu FlushAsync(CancellationToken) tak, aby operace byla zrušena, pokud je zadána, ale neprovádí se žádná jiná akce.

FlushAsync(CancellationToken)

Asynchronně vymaže všechny vyrovnávací paměti pro tento datový proud, způsobí zápis všech dat ve vyrovnávací paměti do základního zařízení a monitoruje žádosti o zrušení.

(Zděděno od Stream)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetLifetimeService()
Zastaralé.

Načte aktuální objekt služby životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
Initialize(Byte*, Int64, Int64, FileAccess)

Inicializuje novou instanci UnmanagedMemoryStream třídy pomocí ukazatele na nespravované umístění paměti.

Initialize(SafeBuffer, Int64, Int64, FileAccess)

Inicializuje novou instanci UnmanagedMemoryStream třídy v bezpečné vyrovnávací paměti se zadaným posunem, délkou a přístupem k souboru.

InitializeLifetimeService()
Zastaralé.

Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
MemberwiseClone(Boolean)

Vytvoří kopii aktuálního objektu bez MarshalByRefObject podmět.

(Zděděno od MarshalByRefObject)
ObjectInvariant()
Zastaralé.

Poskytuje podporu pro Contract .

(Zděděno od Stream)
Read(Byte[], Int32, Int32)

Přečte zadaný počet bajtů do zadaného pole.

Read(Span<Byte>)

Přečte všechny bajty tohoto nespravovaného datového proudu paměti do zadaného rozsahu bajtů.

Read(Span<Byte>)

Při přepsání v odvozené třídě přečte sekvence bajtů z aktuálního datového proudu a posune pozici v rámci datového proudu o počet přečtených bajtů.

(Zděděno od Stream)
ReadAsync(Byte[], Int32, Int32)

Asynchronně přečte sekvenci bajtů z aktuálního datového proudu a posune pozici v rámci datového proudu o počet přečtených bajtů.

(Zděděno od Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronně přečte zadaný počet bajtů do zadaného pole.

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

Asynchronně přečte sekvenci bajtů z aktuálního datového proudu, posune pozici v rámci datového proudu o počet přečtených bajtů a monitoruje požadavky zrušení.

(Zděděno od Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Asynchronně čte nespravovaný datový proud paměti bajty do oblasti paměti.

ReadAsync(Memory<Byte>, CancellationToken)

Asynchronně přečte sekvenci bajtů z aktuálního datového proudu, posune pozici v rámci datového proudu o počet přečtených bajtů a monitoruje požadavky zrušení.

(Zděděno od Stream)
ReadByte()

Přečte bajt ze streamu a posune pozici v rámci streamu o jeden bajt nebo vrátí hodnotu -1, pokud je na konci datového proudu.

Seek(Int64, SeekOrigin)

Nastaví aktuální pozici aktuálního datového proudu na danou hodnotu.

SetLength(Int64)

Nastaví délku datového proudu na zadanou hodnotu.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
Write(Byte[], Int32, Int32)

Zapíše blok bajtů do aktuálního datového proudu pomocí dat z vyrovnávací paměti.

Write(ReadOnlySpan<Byte>)

Zapíše blok bajtů do aktuálního nespravovaného datového proudu paměti pomocí dat z poskytnutého rozsahu bajtů.

Write(ReadOnlySpan<Byte>)

Při přepsání v odvozené třídě zapíše sekvenci bajtů do aktuálního datového proudu a posune aktuální pozici v rámci tohoto datového proudu o počet zapsané bajty.

(Zděděno od Stream)
WriteAsync(Byte[], Int32, Int32)

Asynchronně zapíše sekvenci bajtů do aktuálního datového proudu a posune aktuální pozici v rámci tohoto datového proudu o počet zapsané bajty.

(Zděděno od Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronně zapíše posloupnost bajtů do aktuálního datového proudu, posune aktuální pozici v rámci tohoto streamu o počet zapsaných bajtů a monitoruje žádosti o zrušení.

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

Asynchronně zapíše sekvenci bajtů do aktuálního datového proudu, posune aktuální pozici v rámci tohoto datového proudu o počet zapsané bajty a monitoruje požadavky zrušení.

(Zděděno od Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchronně zapíše rozsah bajtů do aktuálního datového proudu, posune aktuální pozici v rámci tohoto streamu o počet zapsaných bajtů a monitoruje žádosti o zrušení.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchronně zapíše sekvenci bajtů do aktuálního datového proudu, posune aktuální pozici v rámci tohoto datového proudu o počet zapsané bajty a monitoruje požadavky zrušení.

(Zděděno od Stream)
WriteByte(Byte)

Zapíše bajt na aktuální pozici v datovém proudu souboru.

Metody rozšíření

AsInputStream(Stream)

Převede spravovaný datový proud v .NET pro aplikace Windows Store na vstupní datový proud v prostředí Windows Runtime.

AsOutputStream(Stream)

Převede spravovaný datový proud v .NET pro aplikace Windows Store na výstupní datový proud v prostředí Windows Runtime.

AsRandomAccessStream(Stream)

Převede zadaný datový proud na datový proud s náhodným přístupem.

ConfigureAwait(IAsyncDisposable, Boolean)

Nakonfiguruje, jak se čekají na úlohy vrácené z asynchronního jednorázového provedení.

Platí pro