Marshal.WriteInt32 メソッド

定義

32 ビット符号付き整数値をアンマネージ メモリに書き込みます。 アラインされていないメモリ位置への書き込みがサポートされています。

オーバーロード

名前 説明
WriteInt32(IntPtr, Int32)

32 ビット符号付き整数値をアンマネージ メモリに書き込みます。

WriteInt32(IntPtr, Int32, Int32)

32 ビット符号付き整数値を、指定したオフセットのアンマネージ メモリに書き込みます。

WriteInt32(Object, Int32, Int32)
古い.

指定したオフセットで、32 ビット符号付き整数値をアンマネージ メモリに書き込みます。

WriteInt32(IntPtr, Int32)

32 ビット符号付き整数値をアンマネージ メモリに書き込みます。

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

パラメーター

ptr
IntPtr

nativeint

書き込むアンマネージ メモリ内のアドレス。

val
Int32

書き込む値。

属性

例外

ptr が認識されない形式です。

-または-

ptrnullです。

-または-

ptr が無効です。

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

static void ReadWriteInt32()
{
    // Allocate unmanaged memory. 
    int elementSize = 4;
    IntPtr unmanagedArray = Marshal.AllocHGlobal(10 * elementSize);

    // Set the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Marshal.WriteInt32(unmanagedArray, i * elementSize, ((Int32)(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.ReadInt32(unmanagedArray, i * elementSize));
    }

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteInt32()
    ' Allocate unmanaged memory. 
    Dim elementSize As Integer = 4
    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.WriteInt32(unmanagedArray, i * elementSize, CType(i + 1, Int32))
    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.ReadInt32(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

    Console.WriteLine("Done. Press Enter to continue.")
    Console.ReadLine()
End Sub

注釈

WriteInt32 を使用すると、アンマネージ 32 ビット符号付き配列を直接操作できるため、要素値を設定する前にアンマネージド配列全体 ( Marshal.Copy を使用) を別のマネージド配列にコピーする手間が省けます。

アラインされていないメモリ位置への書き込みがサポートされています。

こちらもご覧ください

適用対象

WriteInt32(IntPtr, Int32, Int32)

32 ビット符号付き整数値を、指定したオフセットのアンマネージ メモリに書き込みます。

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

パラメーター

ptr
IntPtr

nativeint

書き込むアンマネージ メモリ内のベース アドレス。

ofs
Int32

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

val
Int32

書き込む値。

属性

例外

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

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

static void ReadWriteInt32()
{
    // Allocate unmanaged memory. 
    int elementSize = 4;
    IntPtr unmanagedArray = Marshal.AllocHGlobal(10 * elementSize);

    // Set the 10 elements of the C-style unmanagedArray
    for (int i = 0; i < 10; i++)
    {
        Marshal.WriteInt32(unmanagedArray, i * elementSize, ((Int32)(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.ReadInt32(unmanagedArray, i * elementSize));
    }

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteInt32()
    ' Allocate unmanaged memory. 
    Dim elementSize As Integer = 4
    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.WriteInt32(unmanagedArray, i * elementSize, CType(i + 1, Int32))
    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.ReadInt32(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

    Console.WriteLine("Done. Press Enter to continue.")
    Console.ReadLine()
End Sub

注釈

WriteInt32 を使用すると、アンマネージ 32 ビット符号付き配列を直接操作できるため、要素値を設定する前にアンマネージド配列全体 ( Marshal.Copy を使用) を別のマネージド配列にコピーする手間が省けます。

アラインされていないメモリ位置への書き込みがサポートされています。

こちらもご覧ください

適用対象

WriteInt32(Object, Int32, Int32)

注意事項

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

指定したオフセットで、32 ビット符号付き整数値をアンマネージ メモリに書き込みます。

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

パラメーター

ptr
Object

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

ofs
Int32

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

val
Int32

書き込む値。

属性

例外

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

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

注釈

WriteInt32 を使用すると、アンマネージ 32 ビット符号付き配列を直接操作できるため、要素値を設定する前にアンマネージド配列全体 ( Marshal.Copy を使用) を別のマネージド配列にコピーする手間が省けます。

アラインされていないメモリ位置への書き込みがサポートされています。

こちらもご覧ください

適用対象