Поделиться через


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 или недопустимый адрес.

Параметр ptr является объектом ArrayWithOffset. Этот метод не принимает параметры 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 не является распознаваемым форматом.

-или-

ptr имеет значение null.

-или-

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)

Исходный код:
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 или недопустимый адрес.

Примеры

В следующем примере показано, как выполнять чтение и запись в неуправляемый массив с помощью 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) в отдельный управляемый массив перед установкой значений его элементов.

Запись в невыровненные участки памяти поддерживается.

См. также раздел

Применяется к