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 datových proudech a nevyžaduje, aby obsah nespravované paměti byl zkopírován do haldy.

Poznámka

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

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 UnmanagedMemoryStream třídy pomocí zadaného umístění, délky paměti, celkové velikosti paměti a hodnot přístupu k souborům.

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 souborům.

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 vypršení časového limitu.

(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 celkové množství paměti přiřazené k datovému proudu (kapacita).

Length

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

Position

Získá nebo nastaví aktuální pozici v datovém proudu.

PositionPointer

Získá nebo nastaví ukazatel na bajt 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 vypršením časového limitu.

(Zděděno od Stream)
WriteTimeout

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

(Zděděno od Stream)

Metody

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

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

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

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

(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 datový proud je 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. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů.

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

Načte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu s použitím zadané velikosti vyrovnávací paměti. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů.

(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. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů.

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

Asynchronně přečte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu pomocí zadaného tokenu zrušení. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů.

(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. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů.

(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í. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů.

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

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

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

Přidělí WaitHandle objekt.

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

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

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

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

DisposeAsync()

Asynchronně uvolní nespravované prostředky, které Streampoužívá .

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

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

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

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

(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 se neprováděla žádná akce.

FlushAsync()

Asynchronně vymaže všechny vyrovnávací paměti pro tento datový proud a způsobí zápis všech dat do 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 není provedena žá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 do vyrovnávací paměti do základního zařízení a monitoruje požadavky na zrušení.

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

Slouží jako výchozí hashovací funkce.

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

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

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

Type Získá z aktuální instance.

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

Inicializuje novou instanci UnmanagedMemoryStream třídy pomocí ukazatele na umístění nespravované 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 souborům.

InitializeLifetimeService()
Zastaralé.

Získá životnost objektu služby, který řídí zásady životnosti pro tuto instanci.

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

Vytvoří mělkou kopii aktuálního Objectsouboru .

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

Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu.

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

Poskytuje podporu pro Contract.

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

Načte zadaný počet bajtů do zadaného pole.

Read(Span<Byte>)

Nač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 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)

Asynchronně přečte posloupnost 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 sleduje požadavky na zrušení.

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

Asynchronně načítá nespravovaný datový proud paměti v bajtech 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 sleduje požadavky na zrušení.

(Zděděno od Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Přečte alespoň minimální počet 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)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Asynchronně přečte alespoň minimální počet 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 sleduje požadavky na zrušení.

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

Načte bajt z datového proudu a posune pozici v datovém proudu o jeden bajt, nebo vrátí hodnotu -1, pokud je na konci datového proudu.

ReadExactly(Byte[], Int32, Int32)

Načte count počet bajtů z aktuálního datového proudu a posune pozici v rámci datového proudu.

(Zděděno od Stream)
ReadExactly(Span<Byte>)

Načte bajty z aktuálního datového proudu a posune pozici v rámci datového proudu, dokud buffer není vyplněna.

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

Asynchronně načte count počet bajtů z aktuálního datového proudu, posune pozici v rámci datového proudu a monitoruje požadavky na zrušení.

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

Asynchronně čte bajty z aktuálního datového proudu, posune pozici v rámci datového proudu až do buffer vyplnění a monitoruje žádosti o zrušení.

(Zděděno od Stream)
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 paměťového streamu pomocí dat z zadané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ých bajtů.

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

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

(Zděděno od Stream)
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ých bajtů a sleduje požadavky na 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ých bajtů a sleduje požadavky na 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 datového proudu o počet zapsaných bajtů a monitoruje požadavky na 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ých bajtů a sleduje požadavky na zrušení.

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

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

Metody rozšíření

CopyToAsync(Stream, PipeWriter, CancellationToken)

Asynchronně přečte bajty z objektu Stream a zapíše je do zadaného PipeWriterobjektu pomocí tokenu zrušení.

AsInputStream(Stream)

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

AsOutputStream(Stream)

Převede spravovaný datový proud v aplikacích .NET pro 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)

Konfiguruje, jak se provádí funkce awaits u úloh vrácených z asynchronního jednorázového režimu.

Platí pro