Marshal.WriteByte Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menulis nilai byte tunggal ke memori yang tidak dikelola.
Overload
WriteByte(Object, Int32, Byte) |
Kedaluwarsa.
Menulis nilai byte tunggal ke memori yang tidak dikelola pada offset tertentu. |
WriteByte(IntPtr, Byte) |
Menulis nilai byte tunggal ke memori yang tidak dikelola. |
WriteByte(IntPtr, Int32, Byte) |
Menulis nilai byte tunggal ke memori yang tidak dikelola pada offset tertentu. |
WriteByte(Object, Int32, Byte)
- Sumber:
- Marshal.CoreCLR.cs
- Sumber:
- Marshal.CoreCLR.cs
- Sumber:
- Marshal.CoreCLR.cs
Perhatian
WriteByte(Object, Int32, Byte) may be unavailable in future releases.
Menulis nilai byte tunggal ke memori yang tidak dikelola pada offset tertentu.
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);
[System.Obsolete("WriteByte(Object, Int32, Byte) may be unavailable in future releases.")]
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.")>]
[<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
static member WriteByte : obj * int * byte -> unit
[<System.Security.SecurityCritical>]
static member WriteByte : obj * int * byte -> unit
Public Shared Sub WriteByte (ptr As Object, ofs As Integer, val As Byte)
Parameter
- ptr
- Object
Alamat dasar dalam memori objek target yang tidak dikelola.
- ofs
- Int32
Offset byte tambahan, yang ditambahkan ke ptr
parameter sebelum menulis.
- val
- Byte
Nilai yang akan ditulis.
- Atribut
Pengecualian
Alamat dasar (ptr
) ditambah byte offset (ofs
) menghasilkan alamat null atau tidak valid.
ptr
ArrayWithOffset adalah objek . Metode ini tidak menerima ArrayWithOffset parameter.
Keterangan
WriteByte memungkinkan interaksi langsung dengan array byte gaya C yang tidak dikelola, menghilangkan pengeluaran menyalin seluruh array yang tidak dikelola (menggunakan Marshal.Copy) ke array terkelola terpisah sebelum mengatur nilai elemennya.
Lihat juga
Berlaku untuk
WriteByte(IntPtr, Byte)
- Sumber:
- Marshal.cs
- Sumber:
- Marshal.cs
- Sumber:
- Marshal.cs
Menulis nilai byte tunggal ke memori yang tidak dikelola.
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)
Parameter
- ptr
-
IntPtr
nativeint
Alamat dalam memori yang tidak dikelola untuk ditulis.
- val
- Byte
Nilai yang akan ditulis.
- Atribut
Pengecualian
ptr
bukan format yang dikenali.
-atau-
ptr
adalah null
.
-atau-
ptr
tidak valid.
Contoh
Contoh berikut membuat blok memori yang tidak dikelola, menulis byte ke memori yang tidak dikelola, membaca byte kembali dari memori yang tidak dikelola, lalu membuang memori yang tidak dikelola.
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
Keterangan
WriteByte memungkinkan interaksi langsung dengan array byte gaya C yang tidak dikelola, menghilangkan pengeluaran menyalin seluruh array yang tidak dikelola (menggunakan Marshal.Copy) ke array terkelola terpisah sebelum mengatur nilai elemennya.
Lihat juga
Berlaku untuk
WriteByte(IntPtr, Int32, Byte)
- Sumber:
- Marshal.cs
- Sumber:
- Marshal.cs
- Sumber:
- Marshal.cs
Menulis nilai byte tunggal ke memori yang tidak dikelola pada offset tertentu.
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)
Parameter
- ptr
-
IntPtr
nativeint
Alamat dasar dalam memori yang tidak dikelola untuk ditulis.
- ofs
- Int32
Offset byte tambahan, yang ditambahkan ke ptr
parameter sebelum menulis.
- val
- Byte
Nilai yang akan ditulis.
- Atribut
Pengecualian
Alamat dasar (ptr
) ditambah byte offset (ofs
) menghasilkan alamat null atau tidak valid.
Contoh
Contoh berikut menunjukkan cara membaca dan menulis ke array yang tidak dikelola menggunakan ReadByte metode dan 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
Keterangan
WriteByte memungkinkan interaksi langsung dengan array byte gaya C yang tidak dikelola, menghilangkan pengeluaran menyalin seluruh array yang tidak dikelola (menggunakan Marshal.Copy) ke array terkelola terpisah sebelum mengatur nilai elemennya.