Marshal.WriteIntPtr Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Grava um valor inteiro de tamanho nativo do processador na memória não gerenciada. Inteiros de 32 bits são gravados em sistemas de 32 bits e inteiros de 64 bits são gravados em sistemas de 64 bits. Há suporte para gravação em locais de memória não assinados.
Sobrecargas
| Nome | Description |
|---|---|
| WriteIntPtr(IntPtr, IntPtr) |
Grava um valor inteiro de tamanho nativo do processador na memória não gerenciada. |
| WriteIntPtr(IntPtr, Int32, IntPtr) |
Grava um valor inteiro de tamanho nativo do processador na memória não gerenciada em um deslocamento especificado. |
| WriteIntPtr(Object, Int32, IntPtr) |
Obsoleto.
Grava um valor inteiro de tamanho nativo do processador na memória não gerenciada. |
WriteIntPtr(IntPtr, IntPtr)
Grava um valor inteiro de tamanho nativo do processador na memória não gerenciada.
public:
static void WriteIntPtr(IntPtr ptr, IntPtr val);
[System.Security.SecurityCritical]
public static void WriteIntPtr(IntPtr ptr, IntPtr val);
public static void WriteIntPtr(IntPtr ptr, IntPtr val);
[<System.Security.SecurityCritical>]
static member WriteIntPtr : nativeint * nativeint -> unit
static member WriteIntPtr : nativeint * nativeint -> unit
Public Shared Sub WriteIntPtr (ptr As IntPtr, val As IntPtr)
Parâmetros
- ptr
-
IntPtr
nativeint
O endereço na memória não gerenciada para o qual gravar.
- val
-
IntPtr
nativeint
O valor a ser gravado.
- Atributos
Exceções
Exemplos
O exemplo a seguir demonstra como ler e gravar em uma matriz não gerenciada usando os métodos e WriteIntPtr os ReadIntPtr métodos.
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
WriteIntPtr 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 definir seus valores de elemento.
Há suporte para gravação em locais de memória não assinados.
Confira também
Aplica-se a
WriteIntPtr(IntPtr, Int32, IntPtr)
Grava um valor inteiro de tamanho nativo do processador na memória não gerenciada em um deslocamento especificado.
public:
static void WriteIntPtr(IntPtr ptr, int ofs, IntPtr val);
[System.Security.SecurityCritical]
public static void WriteIntPtr(IntPtr ptr, int ofs, IntPtr val);
public static void WriteIntPtr(IntPtr ptr, int ofs, IntPtr val);
[<System.Security.SecurityCritical>]
static member WriteIntPtr : nativeint * int * nativeint -> unit
static member WriteIntPtr : nativeint * int * nativeint -> unit
Public Shared Sub WriteIntPtr (ptr As IntPtr, ofs As Integer, val As IntPtr)
Parâmetros
- ptr
-
IntPtr
nativeint
O endereço base na memória não gerenciada para gravar.
- ofs
- Int32
Um deslocamento de bytes adicional, que é adicionado ao parâmetro antes da ptr gravação.
- val
-
IntPtr
nativeint
O valor a ser gravado.
- Atributos
Exceções
O endereço base (ptr) mais o byte de deslocamento (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 métodos e WriteIntPtr os ReadIntPtr métodos.
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
Esse método grava um inteiro de 32 bits em sistemas de 32 bits e um inteiro de 64 bits em sistemas de 64 bits.
WriteIntPtr 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 definir seus valores de elemento.
Há suporte para gravação em locais de memória não assinados.
Confira também
Aplica-se a
WriteIntPtr(Object, Int32, IntPtr)
Cuidado
WriteIntPtr(Object, Int32, IntPtr) may be unavailable in future releases.
Grava um valor inteiro de tamanho nativo do processador na memória não gerenciada.
public:
static void WriteIntPtr(System::Object ^ ptr, int ofs, IntPtr val);
[System.Obsolete("WriteIntPtr(Object, Int32, IntPtr) may be unavailable in future releases.")]
[System.Security.SecurityCritical]
public static void WriteIntPtr(object ptr, int ofs, IntPtr val);
public static void WriteIntPtr(object ptr, int ofs, IntPtr val);
[System.Security.SecurityCritical]
public static void WriteIntPtr(object ptr, int ofs, IntPtr val);
[System.Obsolete("WriteIntPtr(Object, Int32, IntPtr) may be unavailable in future releases.")]
public static void WriteIntPtr(object ptr, int ofs, IntPtr val);
[<System.Obsolete("WriteIntPtr(Object, Int32, IntPtr) may be unavailable in future releases.")>]
[<System.Security.SecurityCritical>]
static member WriteIntPtr : obj * int * nativeint -> unit
static member WriteIntPtr : obj * int * nativeint -> unit
[<System.Security.SecurityCritical>]
static member WriteIntPtr : obj * int * nativeint -> unit
[<System.Obsolete("WriteIntPtr(Object, Int32, IntPtr) may be unavailable in future releases.")>]
static member WriteIntPtr : obj * int * nativeint -> unit
Public Shared Sub WriteIntPtr (ptr As Object, ofs As Integer, val As IntPtr)
Parâmetros
- ptr
- Object
O endereço base na memória não gerenciada do objeto de destino.
- ofs
- Int32
Um deslocamento de bytes adicional, que é adicionado ao parâmetro antes da ptr gravação.
- val
-
IntPtr
nativeint
O valor a ser gravado.
- Atributos
Exceções
O endereço base (ptr) mais o byte de deslocamento (ofs) produz um endereço nulo ou inválido.
ptr é um ArrayWithOffset objeto. Esse método não aceita ArrayWithOffset parâmetros.
Comentários
WriteIntPtr permite a interação direta com uma matriz de bytes de estilo 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 definir seus valores de elemento.
Há suporte para gravação em locais de memória não assinados.