Marshal.ReadInt64 Метод

Определение

Считывает 64-разрядное целое число со знаком из неуправляемой памяти. Поддерживается чтение из ненаправленных расположений памяти.

Перегрузки

Имя Описание
ReadInt64(IntPtr)

Считывает 64-разрядное целое число со знаком из неуправляемой памяти.

ReadInt64(IntPtr, Int32)

Считывает 64-разрядное целое число со знаком в заданном смещение из неуправляемой памяти.

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

Считывает 64-разрядное целое число со знаком в заданном смещение из неуправляемой памяти.

ReadInt64(IntPtr)

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

Считывает 64-разрядное целое число со знаком из неуправляемой памяти.

public:
 static long ReadInt64(IntPtr ptr);
[System.Security.SecurityCritical]
public static long ReadInt64(IntPtr ptr);
public static long ReadInt64(IntPtr ptr);
[<System.Security.SecurityCritical>]
static member ReadInt64 : nativeint -> int64
static member ReadInt64 : nativeint -> int64
Public Shared Function ReadInt64 (ptr As IntPtr) As Long

Параметры

ptr
IntPtr

nativeint

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

Возвращаемое значение

64-разрядное целое число со знаком считывается из неуправляемой памяти.

Атрибуты

Исключения

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

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

using namespace System;
using namespace System::Runtime::InteropServices;



void main()
{
    // Create an unmanaged __int64.
    __int64 myVal = 42;

    // Read the value as a managed Int64.
    Int64 ^ myManagedVal = Marshal::ReadInt64((IntPtr) &myVal);

    // Display the value to the console.
    Console::WriteLine(myManagedVal);
}

Комментарии

ReadInt64 имеет подразумеваемое смещение 0. Этот метод позволяет напрямую взаимодействовать с неуправляемым массивом стилей C Int64 , устраняя расходы на копирование всего неуправляемого массива (с помощью Marshal.Copy) в отдельный управляемый массив перед чтением значений его элементов.

Поддерживается чтение из ненаправленных расположений памяти.

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

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

ReadInt64(IntPtr, Int32)

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

Считывает 64-разрядное целое число со знаком в заданном смещение из неуправляемой памяти.

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

Параметры

ptr
IntPtr

nativeint

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

ofs
Int32

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

Возвращаемое значение

64-разрядное целое число со знаком считывается из неуправляемой памяти в заданном смещение.

Атрибуты

Исключения

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

Примеры

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

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


using namespace System;
using namespace System::Runtime::InteropServices;



void main()
{
    // Create an unmanaged __int64 pointer.
    __int64 * myVal;
    __int64 tmp = 42;
    // Initialize it to another value.
    myVal = &tmp;

    // Read value as a managed Int64.
    Int64 ^ myManagedVal = Marshal::ReadInt64((IntPtr) myVal, 0);

    // Display the value to the console.
    Console::WriteLine(myManagedVal);
}

Комментарии

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

Поддерживается чтение из ненаправленных расположений памяти.

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

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

ReadInt64(Object, Int32)

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

Внимание

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

Считывает 64-разрядное целое число со знаком в заданном смещение из неуправляемой памяти.

public:
 static long ReadInt64(System::Object ^ ptr, int ofs);
[System.Obsolete("ReadInt64(Object, Int32) may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static long ReadInt64(object ptr, int ofs);
[System.Obsolete("ReadInt64(Object, Int32) may be unavailable in future releases.")]
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available")]
public static long ReadInt64(object ptr, int ofs);
[System.Obsolete("ReadInt64(Object, Int32) may be unavailable in future releases.")]
public static long ReadInt64(object ptr, int ofs);
public static long ReadInt64(object ptr, int ofs);
[System.Security.SecurityCritical]
public static long ReadInt64(object ptr, int ofs);
[<System.Obsolete("ReadInt64(Object, Int32) may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member ReadInt64 : obj * int -> int64
[<System.Obsolete("ReadInt64(Object, Int32) may be unavailable in future releases.")>]
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available")>]
static member ReadInt64 : obj * int -> int64
[<System.Obsolete("ReadInt64(Object, Int32) may be unavailable in future releases.")>]
static member ReadInt64 : obj * int -> int64
static member ReadInt64 : obj * int -> int64
[<System.Security.SecurityCritical>]
static member ReadInt64 : obj * int -> int64
Public Shared Function ReadInt64 (ptr As Object, ofs As Integer) As Long

Параметры

ptr
Object

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

ofs
Int32

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

Возвращаемое значение

64-разрядное целое число со знаком считывается из неуправляемой памяти в заданном смещение.

Атрибуты

Исключения

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

ptr ArrayWithOffset— это объект. Этот метод не принимает ArrayWithOffset параметры.

Комментарии

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

Поддерживается чтение из ненаправленных расположений памяти.

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

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