Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Marshal.ReadByte (IntPtr)

 

Data di pubblicazione: ottobre 2016

Legge un singolo byte da memoria non gestita.

Spazio dei nomi:   System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

[SecurityCriticalAttribute]
public static byte ReadByte(
	IntPtr ptr
)

Parametri

ptr
Type: System.IntPtr

Indirizzo nella memoria non gestita da cui leggere.

Valore restituito

Type: System.Byte

Byte letto da memoria non gestita.

Exception Condition
AccessViolationException

ptr non è un formato riconosciuto.

-oppure-

ptr è null.

-oppure-

ptr non è valido.

ReadByte dispone di un offset implicito di 0. Questo metodo consente l'interazione diretta con una matrice di byte di tipo C non gestita, eliminando l'inconveniente di copiare un'intera matrice non gestita (utilizzando Marshal.Copy) in una matrice gestita separata prima di leggere i valori di elementi.

La lettura da posizioni di memoria non allineate è supportata.

Nell'esempio seguente viene creato un blocco di memoria non gestita, scrive un byte nella memoria non gestita, legge i byte da memoria non gestita e quindi elimina la memoria non gestita.

using System;
using System.Runtime.InteropServices;

 class Example
 {
     static void Main(string[] args)
     {
          // Allocate 1 byte of unmanaged memory.
          IntPtr hGlobal = Marshal.AllocHGlobal(1);

          // Create a new byte.
          byte b = 1;
          Console.WriteLine("Byte written to unmanaged memory: " + b);

          // Write the byte to unmanaged memory.
          Marshal.WriteByte(hGlobal, b);

          // Read byte from unmanaged memory.
          byte c = Marshal.ReadByte(hGlobal);
          Console.WriteLine("Byte read from unmanaged memory: " + c);

          // Free the unmanaged memory.
          Marshal.FreeHGlobal(hGlobal);
          Console.WriteLine("Unmanaged memory was disposed.");
     }
}

Nell'esempio seguente viene illustrato come utilizzare il ReadByte per leggere il valore di un carattere non gestito.


using namespace System;
using namespace System::Runtime::InteropServices;



void main()
{
	// Create an unmanaged byte.
	const char * myString = "b";

	// Read the c string as a managed byte.
        Byte ^ myManagedByte = Marshal::ReadByte((IntPtr) (char *) myString);

	// Display the byte to the console.
	Console::WriteLine(myManagedByte);
}

SecurityCriticalAttribute

requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: