Marshal.WriteByte Método

Definição

Grava um único valor de byte na memória não gerenciada.

Sobrecargas

Nome Description
WriteByte(Object, Int32, Byte)
Obsoleto.

Grava um único valor de byte na memória não gerenciada em um deslocamento especificado.

WriteByte(IntPtr, Int32, Byte)

Grava um único valor de byte na memória não gerenciada em um deslocamento especificado.

WriteByte(IntPtr, Byte)

Grava um único valor de byte na memória não gerenciada.

WriteByte(Object, Int32, Byte)

Cuidado

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

Grava um único valor de byte na memória não gerenciada em um deslocamento especificado.

public:
 static void WriteByte(System::Object ^ ptr, int ofs, System::Byte val);
[System.Obsolete("WriteByte(Object, Int32, Byte) may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static void WriteByte(object ptr, int ofs, byte val);
public static void WriteByte(object ptr, int ofs, byte val);
[System.Security.SecurityCritical]
public static void WriteByte(object ptr, int ofs, byte val);
[System.Obsolete("WriteByte(Object, Int32, Byte) may be unavailable in future releases.")]
public static void WriteByte(object ptr, int ofs, byte val);
[<System.Obsolete("WriteByte(Object, Int32, Byte) may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member WriteByte : obj * int * byte -> unit
static member WriteByte : obj * int * byte -> unit
[<System.Security.SecurityCritical>]
static member WriteByte : obj * int * byte -> unit
[<System.Obsolete("WriteByte(Object, Int32, Byte) may be unavailable in future releases.")>]
static member WriteByte : obj * int * byte -> unit
Public Shared Sub WriteByte (ptr As Object, ofs As Integer, val As Byte)

Parâmetros

ptr
Object

O endereço base na memória não gerenciada do objeto de destino.

ofs
Int32

Um deslocamento de bytes adicional, que é adicionado ao parâmetro antes da ptr gravação.

val
Byte

O valor a ser gravado.

Atributos

Exceções

O endereço base (ptr) mais o byte de deslocamento (ofs) produz um endereço nulo ou inválido.

ptr é um ArrayWithOffset objeto. Esse método não aceita ArrayWithOffset parâmetros.

Comentários

WriteByte 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 definir seus valores de elemento.

Confira também

Aplica-se a

WriteByte(IntPtr, Int32, Byte)

Grava um único valor de byte na memória não gerenciada em um deslocamento especificado.

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

Parâmetros

ptr
IntPtr

nativeint

O endereço base na memória não gerenciada para gravar.

ofs
Int32

Um deslocamento de bytes adicional, que é adicionado ao parâmetro antes da ptr gravação.

val
Byte

O valor a ser gravado.

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 e WriteByte os ReadByte métodos.

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

Comentários

WriteByte 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 definir seus valores de elemento.

Confira também

Aplica-se a

WriteByte(IntPtr, Byte)

Grava um único valor de byte na memória não gerenciada.

public:
 static void WriteByte(IntPtr ptr, System::Byte val);
[System.Security.SecurityCritical]
public static void WriteByte(IntPtr ptr, byte val);
public static void WriteByte(IntPtr ptr, byte val);
[<System.Security.SecurityCritical>]
static member WriteByte : nativeint * byte -> unit
static member WriteByte : nativeint * byte -> unit
Public Shared Sub WriteByte (ptr As IntPtr, val As Byte)

Parâmetros

ptr
IntPtr

nativeint

O endereço na memória não gerenciada para o qual gravar.

val
Byte

O valor a ser gravado.

Atributos

Exceções

ptr não é um formato reconhecido.

-ou-

ptr é null.

-ou-

ptr é inválido.

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

Comentários

WriteByte 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 definir seus valores de elemento.

Confira também

Aplica-se a