次の方法で共有


Marshal.WriteInt32 メソッド

定義

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

オーバーロード

WriteInt32(Object, Int32, Int32)
古い.

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

WriteInt32(IntPtr, Int32)

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

WriteInt32(IntPtr, Int32, Int32)

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

WriteInt32(Object, Int32, Int32)

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

注意事項

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);
[System.Obsolete("WriteInt32(Object, Int32, Int32) may be unavailable in future releases.")]
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.")>]
[<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
static member WriteInt32 : obj * int * int -> unit
[<System.Security.SecurityCritical>]
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) 別のマネージド配列にコピーする手間が省けます。

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

こちらもご覧ください

適用対象

WriteInt32(IntPtr, Int32)

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

アンマネージ メモリに 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 が無効です。

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

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)

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

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 または無効なアドレスが生成されます。

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

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) 別のマネージド配列にコピーする手間が省けます。

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

こちらもご覧ください

適用対象