UnmanagedMemoryStream UnmanagedMemoryStream UnmanagedMemoryStream UnmanagedMemoryStream Class

Definizione

Importante

Questa API non è conforme a CLS.

Fornisce l'accesso a blocchi di memoria non gestiti da codice gestito.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
Ereditarietà
UnmanagedMemoryStreamUnmanagedMemoryStreamUnmanagedMemoryStreamUnmanagedMemoryStream
Derivato
Attributi

Esempi

Nell'esempio di codice riportato di seguito viene illustrato come leggere e scrivere nella memoria non gestita utilizzando UnmanagedMemoryStream la classe.The following code example demonstrates how to read from and write to unmanaged memory using the UnmanagedMemoryStream class. Un blocco di memoria non gestita viene allocato e deallocato usando la Marshal classe.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();
    }
}

Commenti

Questa classe supporta l'accesso alla memoria non gestita utilizzando il modello basato sul flusso esistente e non richiede che il contenuto nella memoria non gestita venga copiato nell'heap.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.

Nota

Questo tipo implementa l'interfaccia IDisposable, ma attualmente non ha risorse da eliminare.This type implements the IDisposable interface, but does not actually have any resources to dispose. Questo significa che non è necessario eliminarlo chiamando direttamente Dispose() o tramite un costrutto del linguaggio, come using (in C#) o 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.

Costruttori

UnmanagedMemoryStream() UnmanagedMemoryStream() UnmanagedMemoryStream() UnmanagedMemoryStream()

Inizializza una nuova istanza della classe UnmanagedMemoryStream.Initializes a new instance of the UnmanagedMemoryStream class.

UnmanagedMemoryStream(Byte*, Int64) UnmanagedMemoryStream(Byte*, Int64) UnmanagedMemoryStream(Byte*, Int64) UnmanagedMemoryStream(Byte*, Int64)

Inizializza una nuova istanza della classe UnmanagedMemoryStream usando la posizione e la dimensione di memoria specificate.Initializes a new instance of the UnmanagedMemoryStream class using the specified location and memory length.

UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess) UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess) UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess) UnmanagedMemoryStream(Byte*, Int64, Int64, FileAccess)

Inizializza una nuova istanza della classe UnmanagedMemoryStream usando la posizione, la lunghezza e la quantità totale di memoria e i valori di accesso ai file specificati.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) UnmanagedMemoryStream(SafeBuffer, Int64, Int64) UnmanagedMemoryStream(SafeBuffer, Int64, Int64) UnmanagedMemoryStream(SafeBuffer, Int64, Int64)

Inizializza una nuova istanza della classe UnmanagedMemoryStream in un buffer sicuro, con un valore specificato di offset e lunghezza.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset and length.

UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess) UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess) UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess) UnmanagedMemoryStream(SafeBuffer, Int64, Int64, FileAccess)

Inizializza una nuova istanza della classe UnmanagedMemoryStream in un buffer sicuro, con un valore specificato di offset, lunghezza e accesso ai file.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset, length, and file access.

Proprietà

CanRead CanRead CanRead CanRead

Ottiene un valore che indica se il flusso supporta la lettura.Gets a value indicating whether a stream supports reading.

CanSeek CanSeek CanSeek CanSeek

Ottiene un valore che indica se il flusso supporta la ricerca.Gets a value indicating whether a stream supports seeking.

CanTimeout CanTimeout CanTimeout CanTimeout

Ottiene un valore che determina se il flusso corrente prevede il timeout.Gets a value that determines whether the current stream can time out.

(Inherited from Stream)
CanWrite CanWrite CanWrite CanWrite

Ottiene un valore che indica se il flusso supporta la scrittura.Gets a value indicating whether a stream supports writing.

Capacity Capacity Capacity Capacity

Ottiene la lunghezza (dimensione) del flusso o la quantità totale di memoria assegnata al flusso (capacità).Gets the stream length (size) or the total amount of memory assigned to a stream (capacity).

Length Length Length Length

Ottiene la lunghezza dei dati in un flusso.Gets the length of the data in a stream.

Position Position Position Position

Ottiene o imposta la posizione corrente nel flusso.Gets or sets the current position in a stream.

PositionPointer PositionPointer PositionPointer PositionPointer

Ottiene o imposta un puntatore byte al flusso in base alla posizione corrente nel flusso.Gets or sets a byte pointer to a stream based on the current position in the stream.

ReadTimeout ReadTimeout ReadTimeout ReadTimeout

Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la lettura prima del timeout.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Inherited from Stream)
WriteTimeout WriteTimeout WriteTimeout WriteTimeout

Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la scrittura prima del timeout.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Inherited from Stream)

Metodi

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

Inizia un'operazione di lettura asincrona.Begins an asynchronous read operation. (In alternativa, si consideri l'uso di ReadAsync(Byte[], Int32, Int32).)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Inherited from Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Inizia un'operazione di scrittura asincrona.Begins an asynchronous write operation. (In alternativa, si consideri l'uso di WriteAsync(Byte[], Int32, Int32).)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Inherited from Stream)
Close() Close() Close() Close()

Chiude il flusso corrente e libera le risorse, come socket e handle di file, ad esso associate.Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. Anziché chiamare questo metodo, assicurarsi che il flusso sia eliminato correttamente.Instead of calling this method, ensure that the stream is properly disposed.

(Inherited from Stream)
CopyTo(Stream) CopyTo(Stream) CopyTo(Stream) CopyTo(Stream)

Legge i byte dal flusso corrente e li scrive in un altro flusso.Reads the bytes from the current stream and writes them to another stream.

(Inherited from Stream)
CopyTo(Stream, Int32) CopyTo(Stream, Int32) CopyTo(Stream, Int32) CopyTo(Stream, Int32)

Legge tutti i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione di buffer specificata.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Inherited from Stream)
CopyToAsync(Stream) CopyToAsync(Stream) CopyToAsync(Stream) CopyToAsync(Stream)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Inherited from Stream)
CopyToAsync(Stream, CancellationToken) CopyToAsync(Stream, CancellationToken) CopyToAsync(Stream, CancellationToken) CopyToAsync(Stream, CancellationToken)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso, usando un token di annullamento specificato.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Inherited from Stream)
CopyToAsync(Stream, Int32) CopyToAsync(Stream, Int32) CopyToAsync(Stream, Int32) CopyToAsync(Stream, Int32)

Legge in modo asincrono tutti i byte dal flusso corrente e li scrive in un altro flusso, utilizzando una dimensione di buffer specificata.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Inherited from Stream)
CopyToAsync(Stream, Int32, CancellationToken) CopyToAsync(Stream, Int32, CancellationToken) CopyToAsync(Stream, Int32, CancellationToken) CopyToAsync(Stream, Int32, CancellationToken)

Legge in modo asincrono i byte dal flusso corrente e li scrive in un altro flusso, usando una dimensione di buffer specificata e un token di annullamento.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

(Inherited from Stream)
CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
CreateWaitHandle() CreateWaitHandle() CreateWaitHandle() CreateWaitHandle()

Alloca un oggetto WaitHandle.Allocates a WaitHandle object.

(Inherited from Stream)
Dispose() Dispose() Dispose() Dispose()

Rilascia tutte le risorse usate da Stream.Releases all resources used by the Stream.

(Inherited from Stream)
Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

Rilascia le risorse non gestite usate da UnmanagedMemoryStream e, facoltativamente, le risorse gestite.Releases the unmanaged resources used by the UnmanagedMemoryStream and optionally releases the managed resources.

DisposeAsync() DisposeAsync() DisposeAsync() DisposeAsync()

Consente di liberare in modo asincrono le risorse non gestite utilizzate da Stream.Asynchronously releases the unmanaged resources used by the Stream.

(Inherited from Stream)
EndRead(IAsyncResult) EndRead(IAsyncResult) EndRead(IAsyncResult) EndRead(IAsyncResult)

Attende il completamento della lettura asincrona in sospeso.Waits for the pending asynchronous read to complete. (In alternativa, si consideri l'uso di ReadAsync(Byte[], Int32, Int32).)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Inherited from Stream)
EndWrite(IAsyncResult) EndWrite(IAsyncResult) EndWrite(IAsyncResult) EndWrite(IAsyncResult)

Termina un'operazione di scrittura asincrona.Ends an asynchronous write operation. (In alternativa, si consideri l'uso di WriteAsync(Byte[], Int32, Int32).)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Inherited from Stream)
Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Inherited from Object)
Flush() Flush() Flush() Flush()

Esegue l'override del metodo Flush() in modo che non venga effettuata alcuna operazione.Overrides the Flush() method so that no action is performed.

FlushAsync() FlushAsync() FlushAsync() FlushAsync()

Cancella in modo asincrono i dati di tutti i buffer del flusso e determina la scrittura dei dati memorizzati nel buffer nel dispositivo sottostante.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Inherited from Stream)
FlushAsync(CancellationToken) FlushAsync(CancellationToken) FlushAsync(CancellationToken) FlushAsync(CancellationToken)

Esegue l'override del metodo FlushAsync(CancellationToken) in modo che, se specificato, l'operazione venga annullata, ma non vengano eseguite altre azioni.Overrides the FlushAsync(CancellationToken) method so that the operation is cancelled if specified, but no other action is performed.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Inherited from Object)
Initialize(Byte*, Int64, Int64, FileAccess) Initialize(Byte*, Int64, Int64, FileAccess) Initialize(Byte*, Int64, Int64, FileAccess) Initialize(Byte*, Int64, Int64, FileAccess)

Inizializza una nuova istanza della classe UnmanagedMemoryStream usando un puntatore a una posizione di memoria non gestita.Initializes a new instance of the UnmanagedMemoryStream class by using a pointer to an unmanaged memory location.

Initialize(SafeBuffer, Int64, Int64, FileAccess) Initialize(SafeBuffer, Int64, Int64, FileAccess) Initialize(SafeBuffer, Int64, Int64, FileAccess) Initialize(SafeBuffer, Int64, Int64, FileAccess)

Inizializza una nuova istanza della classe UnmanagedMemoryStream in un buffer sicuro, con un valore specificato di offset, lunghezza e accesso ai file.Initializes a new instance of the UnmanagedMemoryStream class in a safe buffer with a specified offset, length, and file access.

InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
ObjectInvariant() ObjectInvariant() ObjectInvariant() ObjectInvariant()

Fornisce supporto per un oggetto Contract.Provides support for a Contract.

(Inherited from Stream)
Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32) Read(Byte[], Int32, Int32)

Legge il numero di byte specificato in una matrice specificata.Reads the specified number of bytes into the specified array.

Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>) Read(Span<Byte>)

Legge tutti i byte di questo flusso di memoria non gestita nell'intervallo di byte specificato.Reads all the bytes of this unmanaged memory stream into the specified span of bytes.

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

Legge in modo asincrono una sequenza di byte dal flusso corrente e passa alla posizione successiva nel flusso in base al numero di byte letti.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Inherited from Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken) ReadAsync(Byte[], Int32, Int32, CancellationToken) ReadAsync(Byte[], Int32, Int32, CancellationToken) ReadAsync(Byte[], Int32, Int32, CancellationToken)

Legge in modalità asincrona il numero di byte specificato nella matrice specificata.Asynchronously reads the specified number of bytes into the specified array.

ReadAsync(Memory<Byte>, CancellationToken) ReadAsync(Memory<Byte>, CancellationToken) ReadAsync(Memory<Byte>, CancellationToken) ReadAsync(Memory<Byte>, CancellationToken)

Legge in modo asincrono i byte del flusso di memoria non gestita nell'area di memoria.Asynchronously reads the unmanaged memory stream bytes into the memory region.

ReadByte() ReadByte() ReadByte() ReadByte()

Legge un byte dal flusso e sposta in avanti la posizione corrente all'interno del flusso di un byte o restituisce -1 se si trova alla fine del flusso.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) Seek(Int64, SeekOrigin) Seek(Int64, SeekOrigin) Seek(Int64, SeekOrigin)

Imposta la posizione corrente del flusso corrente sul valore dato.Sets the current position of the current stream to the given value.

SetLength(Int64) SetLength(Int64) SetLength(Int64) SetLength(Int64)

Imposta la lunghezza di un flusso al valore specificato.Sets the length of a stream to a specified value.

ToString() ToString() ToString() ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)
Write(Byte[], Int32, Int32) Write(Byte[], Int32, Int32) Write(Byte[], Int32, Int32) Write(Byte[], Int32, Int32)

Scrive un blocco di byte nel flusso corrente usando dati da un buffer.Writes a block of bytes to the current stream using data from a buffer.

Write(ReadOnlySpan<Byte>) Write(ReadOnlySpan<Byte>) Write(ReadOnlySpan<Byte>) Write(ReadOnlySpan<Byte>)

Scrive un blocco di byte nel flusso di memoria non gestita corrente usando i dati dell'intervallo di byte specificato.Writes a block of bytes to the current unmanaged memory stream using data from the provided span of bytes.

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

Scrive in modo asincrono una sequenza di byte nel flusso corrente e passa alla posizione successiva nel flusso in base al numero di byte scritti.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Inherited from Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken) WriteAsync(Byte[], Int32, Int32, CancellationToken) WriteAsync(Byte[], Int32, Int32, CancellationToken) WriteAsync(Byte[], Int32, Int32, CancellationToken)

Scrive in modo asincrono una sequenza di byte nel flusso corrente e passa alla posizione successiva all'interno del flusso corrente in base al numero di byte scritti e monitora le richieste di annullamento.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) WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Scrive in modo asincrono un intervallo di byte nel flusso corrente, fa avanzare la posizione corrente all'interno del flusso in base al numero di byte scritti e monitora le richieste di annullamento.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) WriteByte(Byte) WriteByte(Byte) WriteByte(Byte)

Scrive un byte nella posizione corrente all'interno del flusso di file.Writes a byte to the current position in the file stream.

Implementazioni dell'interfaccia esplicita

IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose()

Rilascia tutte le risorse usate da Stream.Releases all resources used by the Stream.

(Inherited from Stream)

Metodi di estensione

AsInputStream(Stream) AsInputStream(Stream) AsInputStream(Stream) AsInputStream(Stream)

Converte un flusso gestito in .NET per app di Windows Store in un flusso di input in Windows Runtime.Converts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime.

AsOutputStream(Stream) AsOutputStream(Stream) AsOutputStream(Stream) AsOutputStream(Stream)

Converte un flusso gestito in .NET per app di Windows Store in un flusso di output in Windows Runtime.Converts a managed stream in the .NET for Windows Store apps to an output stream in the Windows Runtime.

AsRandomAccessStream(Stream) AsRandomAccessStream(Stream) AsRandomAccessStream(Stream) AsRandomAccessStream(Stream)

Converte il flusso specificato in un flusso di accesso casuale.Converts the specified stream to a random access stream.

Si applica a