Compartilhar via


Marshal.ReadIntPtr Método

Definição

Lê um inteiro dimensionado nativo do processador da memória não gerenciada. Há suporte para leitura de locais de memória desalinhados.

Sobrecargas

ReadIntPtr(IntPtr, Int32)

Lê um inteiro de tamanho nativo de processador em um determinado deslocamento da memória não gerenciada.

ReadIntPtr(Object, Int32)
Obsoleto.

Lê um inteiro dimensionado nativo do processador da memória não gerenciada.

ReadIntPtr(IntPtr)

Lê um inteiro de tamanho nativo de processador da memória não gerenciada.

ReadIntPtr(IntPtr, Int32)

Origem:
Marshal.cs
Origem:
Marshal.cs
Origem:
Marshal.cs

Lê um inteiro de tamanho nativo de processador em um determinado deslocamento da memória não gerenciada.

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

Parâmetros

ptr
IntPtr

nativeint

O endereço básico na memória não gerenciada no qual a leitura será realizada.

ofs
Int32

Um deslocamento de byte adicional, adicionado ao parâmetro ptr antes de ler.

Retornos

IntPtr

nativeint

O inteiro lido da memória não gerenciada no deslocamento especificado.

Atributos

Exceções

O endereço básico (ptr) e o deslocamento de byte (ofs) produz um endereço nulo ou inválido.

Exemplos

O exemplo a seguir demonstra como ler e gravar em uma matriz não gerenciada usando os ReadIntPtr métodos e WriteIntPtr .

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

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

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteIntPtr()
    ' Allocate unmanaged memory.
    Dim elementSize As Integer = Marshal.SizeOf(GetType(IntPtr))
    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.WriteIntPtr(unmanagedArray, i * elementSize, CType(i + 1, IntPtr))
    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.ReadIntPtr(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

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

Comentários

ReadIntPtr permite a interação direta com uma matriz de estilo IntPtr C não gerenciada, eliminando a despesa de copiar uma matriz não gerenciada inteira (usando Marshal.Copy) para uma matriz gerenciada separada antes de ler seus valores de elemento.

Há suporte para leitura de locais de memória desalinhados.

Confira também

Aplica-se a

ReadIntPtr(Object, Int32)

Origem:
Marshal.cs
Origem:
Marshal.cs
Origem:
Marshal.cs

Cuidado

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

Lê um inteiro dimensionado nativo do processador da memória não gerenciada.

public:
 static IntPtr ReadIntPtr(System::Object ^ ptr, int ofs);
[System.Obsolete("ReadIntPtr(Object, Int32) may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static IntPtr ReadIntPtr (object ptr, int ofs);
[System.Obsolete("ReadIntPtr(Object, Int32) may be unavailable in future releases.")]
public static IntPtr ReadIntPtr (object ptr, int ofs);
public static IntPtr ReadIntPtr (object ptr, int ofs);
[System.Security.SecurityCritical]
public static IntPtr ReadIntPtr (object ptr, int ofs);
[<System.Obsolete("ReadIntPtr(Object, Int32) may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member ReadIntPtr : obj * int -> nativeint
[<System.Obsolete("ReadIntPtr(Object, Int32) may be unavailable in future releases.")>]
static member ReadIntPtr : obj * int -> nativeint
static member ReadIntPtr : obj * int -> nativeint
[<System.Security.SecurityCritical>]
static member ReadIntPtr : obj * int -> nativeint
Public Shared Function ReadIntPtr (ptr As Object, ofs As Integer) As IntPtr

Parâmetros

ptr
Object

O endereço básico em memória não gerenciada do objeto de origem.

ofs
Int32

Um deslocamento de byte adicional, adicionado ao parâmetro ptr antes de ler.

Retornos

IntPtr

nativeint

O inteiro lido da memória não gerenciada no deslocamento especificado.

Atributos

Exceções

O endereço básico (ptr) e o deslocamento de byte (ofs) produz um endereço nulo ou inválido.

ptr é um objeto ArrayWithOffset. Esse método não aceita parâmetros ArrayWithOffset.

Comentários

ReadIntPtr permite a interação direta com uma matriz de estilo IntPtr C não gerenciada, eliminando a despesa de copiar uma matriz não gerenciada inteira (usando Marshal.Copy) para uma matriz gerenciada separada antes de ler seus valores de elemento.

Há suporte para leitura de locais de memória desalinhados.

Confira também

Aplica-se a

ReadIntPtr(IntPtr)

Origem:
Marshal.cs
Origem:
Marshal.cs
Origem:
Marshal.cs

Lê um inteiro de tamanho nativo de processador da memória não gerenciada.

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

Parâmetros

ptr
IntPtr

nativeint

O endereço na memória não gerenciada do qual ler.

Retornos

IntPtr

nativeint

O inteiro lido da memória não gerenciada. Um inteiro de 32 bits é retornado em computadores de 32 bits e um inteiro de 64 bits é retornado em computadores de 64 bits.

Atributos

Exceções

ptr não é um formato reconhecido.

- ou -

ptr é null.

- ou -

ptr é inválido.

Exemplos

O exemplo a seguir demonstra como ler e gravar em uma matriz não gerenciada usando os ReadIntPtr métodos e WriteIntPtr .

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

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

    Marshal.FreeHGlobal(unmanagedArray);

    Console.WriteLine("Done. Press Enter to continue.");
    Console.ReadLine();
}
Sub ReadWriteIntPtr()
    ' Allocate unmanaged memory.
    Dim elementSize As Integer = Marshal.SizeOf(GetType(IntPtr))
    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.WriteIntPtr(unmanagedArray, i * elementSize, CType(i + 1, IntPtr))
    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.ReadIntPtr(unmanagedArray, i * elementSize))
    Next i

    Marshal.FreeHGlobal(unmanagedArray)

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

Comentários

ReadIntPtr tem um deslocamento implícito de 0. Esse método permite a interação direta com uma matriz de estilo IntPtr C não gerenciada, eliminando a despesa de copiar uma matriz não gerenciada inteira (usando Marshal.Copy) para uma matriz gerenciada separada antes de ler seus valores de elemento.

Há suporte para leitura de locais de memória desalinhados.

Confira também

Aplica-se a