次の方法で共有


Marshal.WriteByte メソッド

定義

1 バイト値をアンマネージ メモリに書き込みます。

オーバーロード

WriteByte(Object, Int32, Byte)
古い.

1 バイトをアンマネージ メモリの指定されたオフセット位置に書き込みます。

WriteByte(IntPtr, Byte)

1 バイト値をアンマネージ メモリに書き込みます。

WriteByte(IntPtr, Int32, Byte)

1 バイトをアンマネージ メモリの指定されたオフセット位置に書き込みます。

WriteByte(Object, Int32, Byte)

ソース:
Marshal.CoreCLR.cs
ソース:
Marshal.CoreCLR.cs
ソース:
Marshal.CoreCLR.cs

注意事項

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

1 バイトをアンマネージ メモリの指定されたオフセット位置に書き込みます。

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)

パラメーター

ptr
Object

対象のオブジェクトのアンマネージ メモリ内のベース アドレス。

ofs
Int32

書き込みの前に ptr パラメーターに追加される追加のバイト オフセット。

val
Byte

書き込む値。

属性

例外

ベース アドレス (ptr) にオフセット バイト (ofs) を足すと、null または無効なアドレスが生成されます。

ptrArrayWithOffset オブジェクトです。 このメソッドは、ArrayWithOffset パラメーターを受け入れません。

注釈

WriteByte を使用すると、アンマネージド C スタイルのバイト配列と直接やり取りできるため、要素値を設定する前にアンマネージド配列全体 (を使用 Marshal.Copy) を別のマネージド配列にコピーする手間が省けます。

こちらもご覧ください

適用対象

WriteByte(IntPtr, Byte)

ソース:
Marshal.cs
ソース:
Marshal.cs
ソース:
Marshal.cs

1 バイト値をアンマネージ メモリに書き込みます。

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)

パラメーター

ptr
IntPtr

nativeint

書き込み先となるアンマネージ メモリ内のアドレス。

val
Byte

書き込む値。

属性

例外

ptr が認識された形式ではありません。

または

ptrnull です。

または

ptr が無効です。

次の例では、アンマネージ メモリのブロックを作成し、アンマネージ メモリにバイトを書き込み、アンマネージ メモリからバイトを読み取り、アンマネージド メモリを破棄します。

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

注釈

WriteByte を使用すると、アンマネージド C スタイルのバイト配列と直接やり取りできるため、要素値を設定する前にアンマネージド配列全体 (を使用 Marshal.Copy) を別のマネージド配列にコピーする手間が省けます。

こちらもご覧ください

適用対象

WriteByte(IntPtr, Int32, Byte)

ソース:
Marshal.cs
ソース:
Marshal.cs
ソース:
Marshal.cs

1 バイトをアンマネージ メモリの指定されたオフセット位置に書き込みます。

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)

パラメーター

ptr
IntPtr

nativeint

書き込み先となるアンマネージ メモリ内のベース アドレス。

ofs
Int32

書き込みの前に ptr パラメーターに追加される追加のバイト オフセット。

val
Byte

書き込む値。

属性

例外

ベース アドレス (ptr) にオフセット バイト (ofs) を足すと、null または無効なアドレスが生成されます。

次の例では、 メソッドWriteByteと メソッドを使用してアンマネージド配列の読み取りと書き込みを行う方法をReadByte示します。

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

注釈

WriteByte を使用すると、アンマネージド C スタイルのバイト配列と直接やり取りできるため、要素値を設定する前にアンマネージド配列全体 (を使用 Marshal.Copy) を別のマネージド配列にコピーする手間が省けます。

こちらもご覧ください

適用対象