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.Provides access to unmanaged blocks of memory from managed code.

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
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 nespravované paměti a zapisovat do ní pomocí třídy UnmanagedMemoryStream.The following code example demonstrates how to read from and write to unmanaged memory using the UnmanagedMemoryStream class. Dojde k přidělení a zrušení přidělení bloku nespravované paměti pomocí třídy Marshal.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();
    }
}

Poznámky

Tato třída podporuje přístup k nespravované paměti pomocí existujícího modelu založeného na datovém proudu a nevyžaduje, aby se obsah v nespravované paměti zkopíroval do haldy.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.

Poznámka

Tento typ implementuje IDisposable rozhraní, ale ve skutečnosti nemá žádné prostředky k uvolnění.This type implements the IDisposable interface, but does not actually have any resources to dispose. To znamená, že po jeho uvolnění prostřednictvím přímého volání Dispose() nebo pomocí jazyka konstrukce, jako using (v C#) nebo Using (v jazyce Visual Basic) není nutné.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.

Konstruktory

UnmanagedMemoryStream()

Inicializuje novou instanci třídy UnmanagedMemoryStream.Initializes a new instance of the UnmanagedMemoryStream class.

UnmanagedMemoryStream(Byte*, Int64)

Inicializuje novou instanci třídy UnmanagedMemoryStream pomocí zadaného umístění a délky paměti.Initializes a new instance of the UnmanagedMemoryStream class using the specified location and memory length.

UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)

Inicializuje novou instanci třídy UnmanagedMemoryStream pomocí zadaného umístění, délky paměti, celkového množství paměti a hodnot přístupu k souboru.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)

Inicializuje novou instanci třídy UnmanagedMemoryStream v bezpečné vyrovnávací paměti se zadaným posunem a délkou.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset and length.

UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess)

Inicializuje novou instanci třídy UnmanagedMemoryStream v bezpečné vyrovnávací paměti se zadaným posunem, délkou a přístupem k souborům.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset, length, and file access.

Vlastnosti

CanRead

Načte hodnotu, která označuje, jestli datový proud podporuje čtení.Gets a value indicating whether a stream supports reading.

CanSeek

Načte hodnotu, která označuje, jestli datový proud podporuje hledání.Gets a value indicating whether a stream supports seeking.

CanTimeout

Získá hodnotu, která určuje, zda aktuální datový proud může vyprší časový limit.Gets a value that determines whether the current stream can time out.

(Zděděno od Stream)
CanWrite

Načte hodnotu, která označuje, jestli datový proud podporuje zápis.Gets a value indicating whether a stream supports writing.

Capacity

Získá délku datového proudu (velikost) nebo celkovou velikost paměti, která je přiřazena ke streamu (Capacity).Gets the stream length (size) or the total amount of memory assigned to a stream (capacity).

Length

Získá délku dat v datovém proudu.Gets the length of the data in a stream.

Position

Získá nebo nastaví aktuální pozici v datovém proudu.Gets or sets the current position in a stream.

PositionPointer

Získá nebo nastaví ukazatel na bajt na základě aktuální pozice v datovém proudu.Gets or sets a byte pointer to a stream based on the current position in the stream.

ReadTimeout

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í přečíst.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(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.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Zděděno od Stream)

Metody

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

Zahájí asynchronní operaci čtení.Begins an asynchronous read operation. (Zvažte místo toho použití ReadAsync(Byte[], Int32, Int32).)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

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

Spustí asynchronní operaci zápisu.Begins an asynchronous write operation. (Zvažte místo toho použití WriteAsync(Byte[], Int32, Int32).)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(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.Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. Místo volání této metody zajistěte, aby byl datový proud správně uvolněn.Instead of calling this method, ensure that the stream is properly disposed.

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

Přečte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu.Reads the bytes from the current stream and writes them to another stream.

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

Přeč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.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

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

Asynchronně načte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu.Asynchronously reads the bytes from the current stream and writes them to another stream.

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

Asynchronně načte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadaného tokenu zrušení.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

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

Asynchronně nač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.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

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

Asynchronně nač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í.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

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

Vytvoří objekt, který obsahuje všechny relevantní informace požadované pro vygenerování proxy serveru, který se používá ke komunikaci se vzdáleným objektem.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

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

Přidělí objekt WaitHandle.Allocates a WaitHandle object.

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

Uvolní všechny prostředky, které Streampoužívá.Releases all resources used by the Stream.

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

Uvolní nespravované prostředky používané UnmanagedMemoryStream a volitelně uvolňuje spravované prostředky.Releases the unmanaged resources used by the UnmanagedMemoryStream and optionally releases the managed resources.

DisposeAsync()

Asynchronně uvolňuje nespravované prostředky, které používá Stream.Asynchronously releases the unmanaged resources used by the Stream.

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

Čeká na dokončení probíhajícího asynchronního čtení.Waits for the pending asynchronous read to complete. (Zvažte místo toho použití ReadAsync(Byte[], Int32, Int32).)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

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

Ukončí asynchronní operaci zápisu.Ends an asynchronous write operation. (Zvažte místo toho použití WriteAsync(Byte[], Int32, Int32).)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

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

Určí, zda se zadaný objekt rovná aktuálnímu objektu.Determines whether the specified object is equal to the current object.

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

Přepíše metodu Flush(), takže se neprovede žádná akce.Overrides the Flush() method so that no action is performed.

FlushAsync()

Asynchronně vymaže všechny vyrovnávací paměti pro tento datový proud a způsobí, že všechna data uložená do vyrovnávací paměti se zapisují do základního zařízení.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

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

Přepíše metodu FlushAsync(CancellationToken), aby byla operace zrušena, je-li zadána, ale není provedena žádná jiná akce.Overrides the FlushAsync(CancellationToken) method so that the operation is cancelled if specified, but no other action is performed.

GetHashCode()

Slouží jako výchozí funkce hash.Serves as the default hash function.

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

Načte aktuální objekt služby životnosti, který řídí zásady životního cyklu pro tuto instanci.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

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

Získá Type aktuální instance.Gets the Type of the current instance.

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

Inicializuje novou instanci třídy UnmanagedMemoryStream pomocí ukazatele na nespravované umístění v paměti.Initializes a new instance of the UnmanagedMemoryStream class by using a pointer to an unmanaged memory location.

Initialize(SafeBuffer, Int64, Int64, FileAccess)

Inicializuje novou instanci třídy UnmanagedMemoryStream v bezpečné vyrovnávací paměti se zadaným posunem, délkou a přístupem k souborům.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset, length, and file access.

InitializeLifetimeService()

Získá objekt služby životnosti, který řídí zásady životního cyklu pro tuto instanci.Obtains a lifetime service object to control the lifetime policy for this instance.

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

Vytvoří kopii aktuálního Objectbez podstruktury.Creates a shallow copy of the current Object.

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

Vytvoří kopii aktuálního objektu MarshalByRefObject bez podstruktury.Creates a shallow copy of the current MarshalByRefObject object.

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

Poskytuje podporu pro Contract.Provides support for a Contract.

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

Přečte zadaný počet bajtů do určeného pole.Reads the specified number of bytes into the specified array.

Read(Span<Byte>)

Přečte všechny bajty tohoto nespravovaného paměťového proudu do zadaného rozpětí bajtů.Reads all the bytes of this unmanaged memory stream into the specified span of bytes.

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ů.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

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

Asynchronně přečte zadaný počet bajtů do určeného pole.Asynchronously reads the specified number of bytes into the specified array.

ReadAsync(Memory<Byte>, CancellationToken)

Asynchronně načte bajty nespravovaného paměťového proudu do oblasti paměti.Asynchronously reads the unmanaged memory stream bytes into the memory region.

ReadByte()

Přečte bajt z datového proudu a Posune pozici v rámci datového proudu o jeden bajt, nebo vrátí hodnotu-1, pokud na konci streamu.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)

Nastaví aktuální pozici aktuálního datového proudu na danou hodnotu.Sets the current position of the current stream to the given value.

SetLength(Int64)

Nastaví délku datového proudu na zadanou hodnotu.Sets the length of a stream to a specified value.

ToString()

Vrátí řetězec, který představuje aktuální objekt.Returns a string that represents the current object.

(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.Writes a block of bytes to the current stream using data from a buffer.

Write(ReadOnlySpan<Byte>)

Zapíše blok bajtů do aktuálního nespravovaného paměťového proudu pomocí dat z poskytnutého rozpětí bajtů.Writes a block of bytes to the current unmanaged memory stream using data from the provided span of bytes.

WriteAsync(Byte[], Int32, Int32)

Asynchronně zapisuje 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ů.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

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

Asynchronně zapisuje sekvenci bajtů k aktuálnímu datovému proudu, posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů a monitoruje žádosti o zrušení.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)

Asynchronně zapisuje rozpětí 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 žádosti o zrušení.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)

Zapíše bajt na aktuální pozici v datovém proudu souboru.Writes a byte to the current position in the file stream.

Explicitní implementace rozhraní

IDisposable.Dispose()

Uvolní všechny prostředky, které Streampoužívá.Releases all resources used by the Stream.

(Zděděno od Stream)

Metody rozšíření

AsInputStream(Stream)

Převede spravovaný datový proud v rozhraní .NET pro aplikace pro Windows Store na vstupní datový proud v prostředí Windows Runtime.Converts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime.

AsOutputStream(Stream)

Převede spravovaný datový proud v rozhraní .NET pro aplikace pro Windows Store na výstupní datový proud v prostředí Windows Runtime.Converts a managed stream in the .NET for Windows Store apps to an output stream in the Windows Runtime.

AsRandomAccessStream(Stream)

Převede zadaný datový proud na datový proud s náhodným přístupem.Converts the specified stream to a random access stream.

Platí pro