語言

Marshal.WriteInt32 方法

定義

將 32 位元有符號整數值寫入未管理記憶體。 支援寫入未對齊的記憶體位置。

多載

名稱 Description
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
來源:
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.")]
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available")]
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.")>]
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available")>]
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)會產生空位址或無效位址。

ptr 是一個 ArrayWithOffset 物件。 此方法不接受 ArrayWithOffset 參數。

備註

WriteInt32 它能直接與非管理的 32 位元有號陣列互動,省去在設定元素值前將整個非管理陣列 Marshal.Copy複製到獨立管理陣列的成本。

支援寫入未對齊的記憶體位置。

另請參閱

適用於

WriteInt32(IntPtr, Int32)

來源:
Marshal.cs
來源:
Marshal.cs
來源:
Marshal.cs
來源:
Marshal.cs
來源:
Marshal.cs

將 32 位元有符號整數值寫入未管理記憶體。

public:
 static void WriteInt32(IntPtr ptr, int val);
public static void WriteInt32(IntPtr ptr, int val);
static member WriteInt32 : nativeint * int -> unit
Public Shared Sub WriteInt32 (ptr As IntPtr, val As Integer)

參數

ptr
IntPtr

nativeint

寫入的非管理記憶體位址。

val
Int32

要寫入的值。

例外狀況

ptr 並非被認可的格式。

-或-

ptr 是 null。

-或-

ptr 無效。

範例

以下範例示範如何利用 ReadInt32 and 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)

來源:
Marshal.cs
來源:
Marshal.cs
來源:
Marshal.cs
來源:
Marshal.cs
來源:
Marshal.cs

在指定偏移量處寫入 32 位元有符號整數值到未管理記憶體。

public:
 static void WriteInt32(IntPtr ptr, int ofs, int val);
public static void WriteInt32(IntPtr ptr, int ofs, int val);
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)會產生空位址或無效位址。

範例

以下範例示範如何利用 ReadInt32 and 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複製到獨立管理陣列的成本。

支援寫入未對齊的記憶體位置。

另請參閱

適用於