Marshal.ReadByte Método

Definición

Lee un solo byte de la memoria no administrada. Se admite la lectura desde ubicaciones de memoria no asignadas.

Sobrecargas

Nombre Description
ReadByte(IntPtr, Int32)

Lee un solo byte en un desplazamiento determinado (o índice) de la memoria no administrada.

ReadByte(Object, Int32)
Obsoletos.

Lee un solo byte en un desplazamiento determinado (o índice) de la memoria no administrada.

ReadByte(IntPtr)

Lee un solo byte de la memoria no administrada.

ReadByte(IntPtr, Int32)

Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs

Lee un solo byte en un desplazamiento determinado (o índice) de la memoria no administrada.

public:
 static System::Byte ReadByte(IntPtr ptr, int ofs);
[System.Security.SecurityCritical]
public static byte ReadByte(IntPtr ptr, int ofs);
public static byte ReadByte(IntPtr ptr, int ofs);
[<System.Security.SecurityCritical>]
static member ReadByte : nativeint * int -> byte
static member ReadByte : nativeint * int -> byte
Public Shared Function ReadByte (ptr As IntPtr, ofs As Integer) As Byte

Parámetros

ptr
IntPtr

nativeint

Dirección base en memoria no administrada desde la que se va a leer.

ofs
Int32

Desplazamiento de bytes adicional, que se agrega al ptr parámetro antes de leerlo.

Devoluciones

Bytes leídos de la memoria no administrada en el desplazamiento especificado.

Atributos

Excepciones

La dirección base (ptr) más el byte de desplazamiento (ofs) genera una dirección nula o no válida.

Ejemplos

En el ejemplo siguiente se muestra cómo leer y escribir en una matriz no administrada mediante los ReadByte métodos y WriteByte .

static void ReadWriteByte()
{
    // Allocate unmanaged memory. 
    int elementSize = 1;
    IntPtr unmanagedArray = Marshal.AllocHGlobal(10 * elementSize);

    // Set the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Marshal.WriteByte(unmanagedArray, i * elementSize, ((Byte)(i + 1)));
    }
    Console.WriteLine("Unmanaged memory written.");

    Console.WriteLine("Reading unmanaged memory:");
    // Print the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Console.WriteLine(Marshal.ReadByte(unmanagedArray, i * elementSize));
    }

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteByte()
    ' Allocate unmanaged memory. 
    Dim elementSize As Integer = 1
    Dim unmanagedArray As IntPtr = Marshal.AllocHGlobal(10 * elementSize)

    ' Set the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Marshal.WriteByte(unmanagedArray, i * elementSize, CType(i + 1, Byte))
    Next i
    Console.WriteLine("Unmanaged memory written.")

    Console.WriteLine("Reading unmanaged memory:")
    ' Print the 10 elements of the C-style unmanagedArray
    For i As Integer = 0 To 9
        Console.WriteLine(Marshal.ReadByte(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

    Console.WriteLine("Done. Press Enter to continue.")
    Console.ReadLine()
End Sub

En el ejemplo siguiente se muestra cómo usar el ReadByte método para leer el valor de un carácter no administrado.


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



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

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

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

Comentarios

ReadByte permite la interacción directa con una matriz de bytes de estilo C no administrada, lo que elimina el gasto de copiar una matriz no administrada completa (mediante Marshal.Copy) en una matriz administrada independiente antes de leer sus valores de elemento.

Se admite la lectura desde ubicaciones de memoria no asignadas.

Consulte también

Se aplica a

ReadByte(Object, Int32)

Source:
Marshal.CoreCLR.cs
Source:
Marshal.CoreCLR.cs
Source:
Marshal.CoreCLR.cs
Source:
Marshal.CoreCLR.cs
Source:
Marshal.CoreCLR.cs

Precaución

ReadByte(Object, Int32) may be unavailable in future releases.

Lee un solo byte en un desplazamiento determinado (o índice) de la memoria no administrada.

public:
 static System::Byte ReadByte(System::Object ^ ptr, int ofs);
[System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static byte ReadByte(object ptr, int ofs);
[System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")]
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available")]
public static byte ReadByte(object ptr, int ofs);
[System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")]
public static byte ReadByte(object ptr, int ofs);
public static byte ReadByte(object ptr, int ofs);
[System.Security.SecurityCritical]
public static byte ReadByte(object ptr, int ofs);
[<System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member ReadByte : obj * int -> byte
[<System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")>]
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available")>]
static member ReadByte : obj * int -> byte
[<System.Obsolete("ReadByte(Object, Int32) may be unavailable in future releases.")>]
static member ReadByte : obj * int -> byte
static member ReadByte : obj * int -> byte
[<System.Security.SecurityCritical>]
static member ReadByte : obj * int -> byte
Public Shared Function ReadByte (ptr As Object, ofs As Integer) As Byte

Parámetros

ptr
Object

Dirección base en memoria no administrada del objeto de origen.

ofs
Int32

Desplazamiento de bytes adicional, que se agrega al ptr parámetro antes de leerlo.

Devoluciones

Bytes leídos de la memoria no administrada en el desplazamiento especificado.

Atributos

Excepciones

La dirección base (ptr) más el byte de desplazamiento (ofs) genera una dirección nula o no válida.

ptr es un ArrayWithOffset objeto . Este método no acepta ArrayWithOffset parámetros.

Comentarios

ReadByte permite la interacción directa con una matriz de bytes de estilo C no administrada, lo que elimina el gasto de copiar una matriz no administrada completa (mediante Marshal.Copy) en una matriz administrada independiente antes de leer sus valores de elemento.

Se admite la lectura desde ubicaciones de memoria no asignadas.

Consulte también

Se aplica a

ReadByte(IntPtr)

Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs
Source:
Marshal.cs

Lee un solo byte de la memoria no administrada.

public:
 static System::Byte ReadByte(IntPtr ptr);
[System.Security.SecurityCritical]
public static byte ReadByte(IntPtr ptr);
public static byte ReadByte(IntPtr ptr);
[<System.Security.SecurityCritical>]
static member ReadByte : nativeint -> byte
static member ReadByte : nativeint -> byte
Public Shared Function ReadByte (ptr As IntPtr) As Byte

Parámetros

ptr
IntPtr

nativeint

Dirección de la memoria no administrada desde la que se va a leer.

Devoluciones

Bytes leídos de la memoria no administrada.

Atributos

Excepciones

ptr no es un formato reconocido.

O bien

ptr es null.

O bien

ptr no es válido.

Ejemplos

En el ejemplo siguiente se crea un bloque de memoria no administrada, se escribe un byte en la memoria no administrada, se lee el byte de la memoria no administrada y, a continuación, se elimina la memoria no administrada.

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.");
     }
}
Imports System.Runtime.InteropServices

Module Example
    Sub Main()
         ' Allocate 1 byte of unmanaged memory.
         Dim hGlobal As IntPtr = Marshal.AllocHGlobal(1)
         
         ' Create a new byte.
         Dim b As Byte = 1
         
         Console.WriteLine("Byte written to unmanaged memory: {0}", b)
         
         ' Write the byte to unmanaged memory.
         Marshal.WriteByte(hGlobal, b)
         
         ' Read byte from unmanaged memory.
         Dim c As Byte = Marshal.ReadByte(hGlobal)
         Console.WriteLine("Byte read from unmanaged memory: {0}", c)
         
         ' Free the unmanaged memory.
         Marshal.FreeHGlobal(hGlobal)
         Console.WriteLine("Unmanaged memory was disposed.")
    End Sub
End Module

En el ejemplo siguiente se muestra cómo usar el ReadByte método para leer el valor de un carácter no administrado.


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);
}

Comentarios

ReadByte tiene un desplazamiento implícito de 0. Este método permite la interacción directa con una matriz de bytes de estilo C no administrada, lo que elimina el gasto de copiar una matriz no administrada completa (mediante Marshal.Copy) en una matriz administrada independiente antes de leer sus valores de elemento.

Se admite la lectura desde ubicaciones de memoria no asignadas.

Consulte también

Se aplica a