UnmanagedMemoryStream.Write Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Overload
Write(ReadOnlySpan<Byte>) |
Scrive un blocco di byte nel flusso di memoria non gestita corrente usando i dati dell'intervallo di byte specificato. |
Write(Byte[], Int32, Int32) |
Scrive un blocco di byte nel flusso corrente usando dati da un buffer. |
Write(ReadOnlySpan<Byte>)
- Origine:
- UnmanagedMemoryStream.cs
- Origine:
- UnmanagedMemoryStream.cs
- Origine:
- UnmanagedMemoryStream.cs
Scrive un blocco di byte nel flusso di memoria non gestita corrente usando i dati dell'intervallo di byte specificato.
public:
override void Write(ReadOnlySpan<System::Byte> source);
public:
override void Write(ReadOnlySpan<System::Byte> buffer);
public override void Write (ReadOnlySpan<byte> source);
public override void Write (ReadOnlySpan<byte> buffer);
override this.Write : ReadOnlySpan<byte> -> unit
override this.Write : ReadOnlySpan<byte> -> unit
Public Overrides Sub Write (source As ReadOnlySpan(Of Byte))
Public Overrides Sub Write (buffer As ReadOnlySpan(Of Byte))
Parametri
- sourcebuffer
- ReadOnlySpan<Byte>
Intervallo di byte da cui copiare i byte nel flusso di memoria non gestita corrente.
Si applica a
Write(Byte[], Int32, Int32)
- Origine:
- UnmanagedMemoryStream.cs
- Origine:
- UnmanagedMemoryStream.cs
- Origine:
- UnmanagedMemoryStream.cs
Scrive un blocco di byte nel flusso corrente usando dati da un buffer.
public:
override void Write(cli::array <System::Byte> ^ buffer, int offset, int count);
public override void Write (byte[] buffer, int offset, int count);
override this.Write : byte[] * int * int -> unit
Public Overrides Sub Write (buffer As Byte(), offset As Integer, count As Integer)
Parametri
- buffer
- Byte[]
Matrice di byte da cui copiare i byte nel flusso corrente.
- offset
- Int32
Offset nel buffer da cui avviare la copia dei byte nel flusso corrente.
- count
- Int32
Numero di byte da scrivere nel flusso corrente.
Eccezioni
Il flusso è chiuso.
La memoria sottostante non supporta la scrittura.
-oppure-
È stato eseguito un tentativo di scrittura nel flusso e la proprietà CanWrite è false
.
-oppure-
Il valore count
è maggiore della capacità del flusso.
-oppure-
La posizione è alla fine della capacità del flusso.
Si è verificato un errore di I/O.
Uno dei parametri specificati è minore di zero.
Il parametro offset
meno la lunghezza del parametro buffer
è minore del parametro count
.
Il valore del parametro buffer
è null
.
Esempio
Nell'esempio di codice seguente viene illustrato come leggere e scrivere in memoria non gestita usando la UnmanagedMemoryStream classe . Un blocco di memoria non gestita viene allocato e de-allocato usando la Marshal classe .
// 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
La scrittura si verifica nella posizione corrente nel flusso.