Marshal.WriteByte Método

Definição

Escreve um único valor de byte na memória não gerida.

Sobrecargas

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

Escreve um valor de um único byte na memória não gerida a um deslocamento especificado.

WriteByte(IntPtr, Int32, Byte)

Escreve um valor de um único byte na memória não gerida a um deslocamento especificado.

WriteByte(IntPtr, Byte)

Escreve um único valor de byte na memória não gerida.

WriteByte(Object, Int32, Byte)

Atenção

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

Escreve um valor de um único byte na memória não gerida a 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 gerida do objeto alvo.

ofs
Int32

Um deslocamento adicional de byte, que é adicionado ao ptr parâmetro antes da escrita.

val
Byte

O valor a escrever.

Atributos

Exceções

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

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

Observações

WriteByte permite a interação direta com um array de bytes não gerido no estilo C, eliminando o custo de copiar um array inteiro não gerido (usando Marshal.Copy) para um array gerido separado antes de definir os valores dos seus elementos.

Ver também

Aplica-se a

WriteByte(IntPtr, Int32, Byte)

Escreve um valor de um único byte na memória não gerida a 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 gerida para escrever.

ofs
Int32

Um deslocamento adicional de byte, que é adicionado ao ptr parâmetro antes da escrita.

val
Byte

O valor a escrever.

Atributos

Exceções

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

Exemplos

O exemplo seguinte demonstra como ler e escrever num array não gerido usando os ReadByte métodos 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

Observações

WriteByte permite a interação direta com um array de bytes não gerido no estilo C, eliminando o custo de copiar um array inteiro não gerido (usando Marshal.Copy) para um array gerido separado antes de definir os valores dos seus elementos.

Ver também

Aplica-se a

WriteByte(IntPtr, Byte)

Escreve um único valor de byte na memória não gerida.

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 gerida para escrever.

val
Byte

O valor a escrever.

Atributos

Exceções

ptr não é um formato reconhecido.

-ou-

ptr é null.

-ou-

ptr é inválido.

Exemplos

O exemplo seguinte cria um bloco de memória não gerida, escreve um byte na memória não gerida, lê o byte de volta a partir da memória não gerida e depois descarta a memória não gerida.

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

Observações

WriteByte permite a interação direta com um array de bytes não gerido no estilo C, eliminando o custo de copiar um array inteiro não gerido (usando Marshal.Copy) para um array gerido separado antes de definir os valores dos seus elementos.

Ver também

Aplica-se a