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


Marshal.WriteInt64 Метод

Определение

Записывает в неуправляемую память 64-битное целое число со знаком. Запись в невыровненные участки памяти поддерживается.

Перегрузки

WriteInt64(Object, Int32, Int64)
Устаревшие..

Записывает 64-битное целое число со знаком в неуправляемую память с указанным смещением.

WriteInt64(IntPtr, Int64)

Записывает в неуправляемую память 64-битное целое число со знаком.

WriteInt64(IntPtr, Int32, Int64)

Записывает 64-битное целое число со знаком в неуправляемую память с указанным смещением.

WriteInt64(Object, Int32, Int64)

Исходный код:
Marshal.CoreCLR.cs
Исходный код:
Marshal.CoreCLR.cs
Исходный код:
Marshal.CoreCLR.cs

Внимание!

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

Записывает 64-битное целое число со знаком в неуправляемую память с указанным смещением.

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

Параметры

ptr
Object

Базовый адрес конечного объекта в неуправляемой памяти.

ofs
Int32

Дополнительное смещение байтов, добавляемое к параметру ptr перед записью.

val
Int64

Значение для записи.

Атрибуты

Исключения

Сумма базового адреса (ptr) и байта смещения (ofs) дает значение null или недопустимый адрес.

Параметр ptr является объектом ArrayWithOffset. Этот метод не принимает параметры ArrayWithOffset.

Комментарии

WriteInt64 обеспечивает прямое взаимодействие с неуправляемым 64-разрядным массивом со знаком, устраняя затраты на копирование всего неуправляемого массива (с помощью Marshal.Copy) в отдельный управляемый массив перед установкой значений его элементов.

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

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

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

WriteInt64(IntPtr, Int64)

Исходный код:
Marshal.cs
Исходный код:
Marshal.cs
Исходный код:
Marshal.cs

Записывает в неуправляемую память 64-битное целое число со знаком.

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

Параметры

ptr
IntPtr

nativeint

Адрес в неуправляемой памяти, по которому производится запись.

val
Int64

Значение для записи.

Атрибуты

Исключения

ptr не является распознаваемым форматом.

-или-

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

-или-

ptr недопустим.

Примеры

В следующем примере показано, как считывать и записывать данные в неуправляемый массив с помощью ReadInt64 методов и WriteInt64 .

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

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

    Marshal.FreeHGlobal(unmanagedArray);

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

    Marshal.FreeHGlobal(unmanagedArray)

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

Комментарии

WriteInt64 обеспечивает прямое взаимодействие с неуправляемым 64-разрядным массивом со знаком, устраняя затраты на копирование всего неуправляемого массива (с помощью Marshal.Copy) в отдельный управляемый массив перед установкой значений его элементов.

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

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

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

WriteInt64(IntPtr, Int32, Int64)

Исходный код:
Marshal.cs
Исходный код:
Marshal.cs
Исходный код:
Marshal.cs

Записывает 64-битное целое число со знаком в неуправляемую память с указанным смещением.

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

Параметры

ptr
IntPtr

nativeint

Базовый адрес для записи в неуправляемой памяти.

ofs
Int32

Дополнительное смещение байтов, добавляемое к параметру ptr перед записью.

val
Int64

Значение для записи.

Атрибуты

Исключения

Сумма базового адреса (ptr) и байта смещения (ofs) дает значение null или недопустимый адрес.

Примеры

В следующем примере показано, как считывать и записывать данные в неуправляемый массив с помощью ReadInt64 методов и WriteInt64 .

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

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

    Marshal.FreeHGlobal(unmanagedArray);

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

    Marshal.FreeHGlobal(unmanagedArray)

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

Комментарии

WriteInt64 обеспечивает прямое взаимодействие с неуправляемым 64-разрядным массивом со знаком, устраняя затраты на копирование всего неуправляемого массива (с помощью Marshal.Copy) в отдельный управляемый массив перед установкой значений его элементов.

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

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

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