Marshal.ReadInt64 Método

Definición

Lee un entero de 64 bits con signo de la memoria no administrada. Se admite la lectura desde ubicaciones de memoria desalineadas.

Sobrecargas

ReadInt64(IntPtr)

Lee un entero de 64 bits con signo de la memoria no administrada.

ReadInt64(IntPtr, Int32)

Lee un entero de 64 bits con signo en un desplazamiento dado de la memoria no administrada.

ReadInt64(Object, Int32)
Obsoleto.

Lee un entero de 64 bits con signo en un desplazamiento dado de la memoria no administrada.

ReadInt64(IntPtr)

Lee un entero de 64 bits con signo de la memoria no administrada.

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

Parámetros

ptr
IntPtr

nativeint

Dirección en la memoria no administrada desde la que se va a leer.

Devoluciones

Int64

Entero de 64 bits con signo leído de la memoria no administrada.

Atributos

Excepciones

ptr no es un formato reconocido.

o bien

ptr es null.

o bien

ptr no es válido.

Ejemplos

En el ejemplo siguiente se muestra cómo leer y escribir en una matriz no administrada mediante los ReadInt64 métodos y 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

En el ejemplo siguiente se muestra cómo usar el ReadInt64 método para leer el valor de una variable no administrada __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);
}

Comentarios

ReadInt64 tiene un desplazamiento implícito de 0. Este método permite la interacción directa con una matriz de estilo Int64 C no administrada, lo que elimina el gasto de copiar una matriz no administrada completa (mediante Marshal.Copy) en una matriz administrada independiente antes de leer sus valores de elemento.

Se admite la lectura desde ubicaciones de memoria desalineadas.

Consulte también

Se aplica a

ReadInt64(IntPtr, Int32)

Lee un entero de 64 bits con signo en un desplazamiento dado de la memoria no administrada.

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

Parámetros

ptr
IntPtr

nativeint

Dirección base en la memoria no administrada desde la que se va a leer.

ofs
Int32

Desplazamiento de bytes adicional, que se agrega al parámetro ptr antes de la lectura.

Devoluciones

Int64

Entero de 64 bits con signo leído de la memoria no administrada en el desplazamiento dado.

Atributos

Excepciones

La dirección base (ptr) más el byte de desplazamiento (ofs) produce un valor null o una dirección no válida.

Ejemplos

En el ejemplo siguiente se muestra cómo leer y escribir en una matriz no administrada mediante los ReadInt64 métodos y 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

En el ejemplo siguiente se muestra cómo usar el ReadInt64 método para leer el valor de una variable no administrada __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);
}

Comentarios

ReadInt64 permite la interacción directa con una matriz firmada de 64 bits no administrada, lo que elimina el gasto de copiar una matriz no administrada completa (mediante Marshal.Copy) en una matriz administrada independiente antes de leer sus valores de elemento.

Se admite la lectura desde ubicaciones de memoria desalineadas.

Consulte también

Se aplica a

ReadInt64(Object, Int32)

Precaución

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

Lee un entero de 64 bits con signo en un desplazamiento dado de la memoria no administrada.

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.")]
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.")>]
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

Parámetros

ptr
Object

Dirección base en la memoria no administrada del objeto de origen.

ofs
Int32

Desplazamiento de bytes adicional, que se agrega al parámetro ptr antes de la lectura.

Devoluciones

Int64

Entero de 64 bits con signo leído de la memoria no administrada en el desplazamiento dado.

Atributos

Excepciones

La dirección base (ptr) más el byte de desplazamiento (ofs) produce un valor null o una dirección no válida.

ptr es un objeto ArrayWithOffset. Este método no acepta parámetros ArrayWithOffset.

Comentarios

ReadInt64 permite la interacción directa con una matriz firmada de 64 bits no administrada, lo que elimina el gasto de copiar una matriz no administrada completa (mediante Marshal.Copy) en una matriz administrada independiente antes de leer sus valores de elemento.

Se admite la lectura desde ubicaciones de memoria desalineadas.

Consulte también

Se aplica a