Marshal.ReadIntPtr Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Leest een geheel getal van systeemeigen grootte van een processor uit onbeheerd geheugen. Lezen vanaf niet-uitgelijnde geheugenlocaties wordt ondersteund.
Overloads
| Name | Description |
|---|---|
| ReadIntPtr(IntPtr, Int32) |
Leest een geheel getal van systeemeigen processor op een bepaalde offset van onbeheerd geheugen. |
| ReadIntPtr(Object, Int32) |
Verouderd.
Leest een geheel getal van systeemeigen grootte van een processor uit onbeheerd geheugen. |
| ReadIntPtr(IntPtr) |
Leest een geheel getal van systeemeigen grootte van een processor uit onbeheerd geheugen. |
ReadIntPtr(IntPtr, Int32)
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
Leest een geheel getal van systeemeigen processor op een bepaalde offset van onbeheerd geheugen.
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
Parameters
- ptr
-
IntPtr
nativeint
Het basisadres in niet-beheerd geheugen waaruit moet worden gelezen.
- ofs
- Int32
Een extra byte-offset, die wordt toegevoegd aan de ptr parameter voordat deze wordt gelezen.
Retouren
nativeint
Het gehele getal dat wordt gelezen uit onbeheerd geheugen op de opgegeven offset.
- Kenmerken
Uitzonderingen
Basisadres (ptr) plus offset byte (ofs) produceert een null- of ongeldig adres.
Voorbeelden
In het volgende voorbeeld ziet u hoe u met behulp van de ReadIntPtr en WriteIntPtr methoden kunt lezen en schrijven naar een onbeheerde matrix.
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
Opmerkingen
ReadIntPtr maakt directe interactie mogelijk met een niet-beheerde C-stijlmatrix IntPtr , waardoor de kosten van het kopiëren van een volledige onbeheerde matrix (met behulp Marshal.Copy) naar een afzonderlijke beheerde matrix worden geëlimineerd voordat de elementwaarden worden gelezen.
Lezen vanaf niet-uitgelijnde geheugenlocaties wordt ondersteund.
Zie ook
Van toepassing op
ReadIntPtr(Object, Int32)
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
Let op
ReadIntPtr(Object, Int32) may be unavailable in future releases.
Leest een geheel getal van systeemeigen grootte van een processor uit onbeheerd geheugen.
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
Parameters
- ptr
- Object
Het basisadres in het niet-beheerde geheugen van het bronobject.
- ofs
- Int32
Een extra byte-offset, die wordt toegevoegd aan de ptr parameter voordat deze wordt gelezen.
Retouren
nativeint
Het gehele getal dat wordt gelezen uit onbeheerd geheugen op de opgegeven offset.
- Kenmerken
Uitzonderingen
Basisadres (ptr) plus offset byte (ofs) produceert een null- of ongeldig adres.
ptr is een ArrayWithOffset object. Deze methode accepteert ArrayWithOffset geen parameters.
Opmerkingen
ReadIntPtr maakt directe interactie mogelijk met een niet-beheerde C-stijlmatrix IntPtr , waardoor de kosten van het kopiëren van een volledige onbeheerde matrix (met behulp Marshal.Copy) naar een afzonderlijke beheerde matrix worden geëlimineerd voordat de elementwaarden worden gelezen.
Lezen vanaf niet-uitgelijnde geheugenlocaties wordt ondersteund.
Zie ook
Van toepassing op
ReadIntPtr(IntPtr)
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
Leest een geheel getal van systeemeigen grootte van een processor uit onbeheerd geheugen.
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
Parameters
- ptr
-
IntPtr
nativeint
Het adres in onbeheerd geheugen waaruit moet worden gelezen.
Retouren
nativeint
Het gehele getal dat wordt gelezen uit niet-beheerd geheugen. Een 32-bits geheel getal wordt geretourneerd op 32-bits machines en een 64-bits geheel getal wordt geretourneerd op 64-bits machines.
- Kenmerken
Uitzonderingen
Voorbeelden
In het volgende voorbeeld ziet u hoe u met behulp van de ReadIntPtr en WriteIntPtr methoden kunt lezen en schrijven naar een onbeheerde matrix.
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
Opmerkingen
ReadIntPtr heeft een impliciete offset van 0. Deze methode maakt directe interactie mogelijk met een niet-beheerde C-stijlmatrix IntPtr , waardoor de kosten van het kopiëren van een hele onbeheerde matrix (met behulp) Marshal.Copynaar een afzonderlijke beheerde matrix worden geëlimineerd voordat de elementwaarden worden gelezen.
Lezen vanaf niet-uitgelijnde geheugenlocaties wordt ondersteund.