Marshal.ReadByte Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Lê um único byte da memória não gerenciada. Há suporte para leitura de locais de memória não assinados.
Sobrecargas
ReadByte(IntPtr, Int32) |
Lê um único byte em um determinado deslocamento (ou índice) da memória não gerenciada. |
ReadByte(Object, Int32) |
Obsoleto.
Lê um único byte em um determinado deslocamento (ou índice) da memória não gerenciada. |
ReadByte(IntPtr) |
Lê um único byte da memória não gerenciada. |
ReadByte(IntPtr, Int32)
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
Lê um único byte em um determinado deslocamento (ou índice) da memória não gerenciada.
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
O endereço base na memória não gerenciada da qual ler.
- ofs
- Int32
Um deslocamento de bytes adicional, que é adicionado ao parâmetro ptr
antes da leitura.
Retornos
A leitura de bytes da memória não gerenciada no deslocamento fornecido.
- Atributos
Exceções
O endereço base (ptr
) mais o byte de deslocamento (ofs
) produz um endereço nulo ou inválido.
Exemplos
O exemplo a seguir demonstra como ler e gravar em uma matriz não gerenciada usando os métodos ReadByte e 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
O exemplo a seguir demonstra como usar o método ReadByte para ler o valor de um caractere não gerenciado.
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);
}
Comentários
ReadByte habilita a interação direta com uma matriz de bytes de estilo C não gerenciada, eliminando a despesa de copiar uma matriz não gerenciada inteira (usando Marshal.Copy) para uma matriz gerenciada separada antes de ler seus valores de elemento.
Há suporte para leitura de locais de memória não assinados.
Confira também
Aplica-se a
ReadByte(Object, Int32)
- Origem:
- Marshal.CoreCLR.cs
- Origem:
- Marshal.CoreCLR.cs
- Origem:
- Marshal.CoreCLR.cs
Cuidado
ReadByte(Object, Int32) may be unavailable in future releases.
Lê um único byte em um determinado deslocamento (ou índice) da memória não gerenciada.
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.")]
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.")>]
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
O endereço base na memória não gerenciada do objeto de origem.
- ofs
- Int32
Um deslocamento de bytes adicional, que é adicionado ao parâmetro ptr
antes da leitura.
Retornos
A leitura de bytes da memória não gerenciada no deslocamento fornecido.
- Atributos
Exceções
O endereço base (ptr
) mais o byte de deslocamento (ofs
) produz um endereço nulo ou inválido.
ptr
é um objeto ArrayWithOffset. Esse método não aceita parâmetros de ArrayWithOffset.
Comentários
ReadByte habilita a interação direta com uma matriz de bytes de estilo C não gerenciada, eliminando a despesa de copiar uma matriz não gerenciada inteira (usando Marshal.Copy) para uma matriz gerenciada separada antes de ler seus valores de elemento.
Há suporte para leitura de locais de memória não assinados.
Confira também
Aplica-se a
ReadByte(IntPtr)
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
Lê um único byte da memória não gerenciada.
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
O endereço na memória não gerenciada da qual ler.
Retornos
O byte lido da memória não gerenciada.
- Atributos
Exceções
Exemplos
O exemplo a seguir cria um bloco de memória não gerenciada, grava um byte na memória não gerenciada, lê o byte de volta da memória não gerenciada e descarta a memória não gerenciada.
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
O exemplo a seguir demonstra como usar o método ReadByte para ler o valor de um caractere não gerenciado.
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);
}
Comentários
ReadByte tem um deslocamento implícito de 0. Esse método permite a interação direta com uma matriz de bytes de estilo C não gerenciada, eliminando a despesa de copiar uma matriz não gerenciada inteira (usando Marshal.Copy) para uma matriz gerenciada separada antes de ler seus valores de elemento.
Há suporte para leitura de locais de memória não assinados.