Marshal.ReadIntPtr Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Считывает целое число собственного размера процессора из неуправляемой памяти. Поддерживается чтение из ненаправленных расположений памяти.
Перегрузки
| Имя | Описание |
|---|---|
| ReadIntPtr(IntPtr, Int32) |
Считывает целое число собственного размера процессора с заданным смещением из неуправляемой памяти. |
| ReadIntPtr(Object, Int32) |
Устаревшие.
Считывает целое число собственного размера процессора из неуправляемой памяти. |
| ReadIntPtr(IntPtr) |
Считывает целое число собственного размера процессора из неуправляемой памяти. |
ReadIntPtr(IntPtr, Int32)
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
Считывает целое число собственного размера процессора с заданным смещением из неуправляемой памяти.
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
Параметры
- ptr
-
IntPtr
nativeint
Базовый адрес в неуправляемой памяти, из которой следует читать.
- ofs
- Int32
Дополнительное смещение байтов, которое добавляется в ptr параметр перед чтением.
Возвращаемое значение
nativeint
Целое число, считыванное из неуправляемой памяти в заданном смещение.
- Атрибуты
Исключения
Базовый адрес (ptr) плюс байт смещения (ofs) создает недопустимый или пустой адрес.
Примеры
В следующем примере показано, как считывать и записывать данные в неуправляемый массив с помощью ReadIntPtr методов и 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
Комментарии
ReadIntPtr позволяет напрямую взаимодействовать с неуправляемым массивом стилей C IntPtr , устраняя затраты на копирование всего неуправляемого массива (с помощью Marshal.Copy) в отдельный управляемый массив перед чтением значений его элементов.
Поддерживается чтение из ненаправленных расположений памяти.
См. также раздел
Применяется к
ReadIntPtr(Object, Int32)
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
Внимание!
ReadIntPtr(Object, Int32) may be unavailable in future releases.
Считывает целое число собственного размера процессора из неуправляемой памяти.
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.")]
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available")]
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.")>]
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available")>]
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
Параметры
- ptr
- Object
Базовый адрес в неуправляемой памяти исходного объекта.
- ofs
- Int32
Дополнительное смещение байтов, которое добавляется в ptr параметр перед чтением.
Возвращаемое значение
nativeint
Целое число, считыванное из неуправляемой памяти в заданном смещение.
- Атрибуты
Исключения
Базовый адрес (ptr) плюс байт смещения (ofs) создает недопустимый или пустой адрес.
ptr
ArrayWithOffset— это объект. Этот метод не принимает ArrayWithOffset параметры.
Комментарии
ReadIntPtr позволяет напрямую взаимодействовать с неуправляемым массивом стилей C IntPtr , устраняя затраты на копирование всего неуправляемого массива (с помощью Marshal.Copy) в отдельный управляемый массив перед чтением значений его элементов.
Поддерживается чтение из ненаправленных расположений памяти.
См. также раздел
Применяется к
ReadIntPtr(IntPtr)
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
- Исходный код:
- Marshal.cs
Считывает целое число собственного размера процессора из неуправляемой памяти.
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
Параметры
- ptr
-
IntPtr
nativeint
Адрес в неуправляемой памяти, из которой следует читать.
Возвращаемое значение
nativeint
Целое число, считыванное из неуправляемой памяти. 32-разрядное целое число возвращается на 32-разрядных компьютерах, а 64-разрядное целое число возвращается на 64-разрядных компьютерах.
- Атрибуты
Исключения
ptr не является распознаваемым форматом.
–или–
ptr равно null.
–или–
ptr недопустим.
Примеры
В следующем примере показано, как считывать и записывать данные в неуправляемый массив с помощью ReadIntPtr методов и 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
Комментарии
ReadIntPtr имеет подразумеваемое смещение 0. Этот метод позволяет напрямую взаимодействовать с неуправляемым массивом стилей C IntPtr , устраняя расходы на копирование всего неуправляемого массива (с помощью Marshal.Copy) в отдельный управляемый массив перед чтением значений его элементов.
Поддерживается чтение из ненаправленных расположений памяти.