Marshal.WriteIntPtr 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.
Hiermee schrijft u een systeemeigen geheel getalwaarde van de processor naar onbeheerd geheugen. 32-bits gehele getallen worden geschreven op 32-bits systemen en 64-bits gehele getallen worden geschreven op 64-bits systemen. Schrijven naar niet-uitgelijnde geheugenlocaties wordt ondersteund.
Overloads
| Name | Description |
|---|---|
| WriteIntPtr(IntPtr, IntPtr) |
Hiermee schrijft u een geheel getal in systeemeigen grootte van een processor naar onbeheerd geheugen. |
| WriteIntPtr(IntPtr, Int32, IntPtr) |
Hiermee schrijft u een geheel getal van systeemeigen grootte naar onbeheerd geheugen op een opgegeven offset. |
| WriteIntPtr(Object, Int32, IntPtr) |
Verouderd.
Hiermee schrijft u een systeemeigen geheel getalwaarde van de processor naar onbeheerd geheugen. |
WriteIntPtr(IntPtr, IntPtr)
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
Hiermee schrijft u een geheel getal in systeemeigen grootte van een processor naar onbeheerd geheugen.
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)
Parameters
- ptr
-
IntPtr
nativeint
Het adres in onbeheerd geheugen waarnaar moet worden geschreven.
- val
-
IntPtr
nativeint
De waarde die moet worden geschreven.
- 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
WriteIntPtr 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.Copy) naar een afzonderlijke beheerde matrix worden geëlimineerd voordat de elementwaarden worden ingesteld.
Schrijven naar niet-uitgelijnde geheugenlocaties wordt ondersteund.
Zie ook
Van toepassing op
WriteIntPtr(IntPtr, Int32, IntPtr)
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
Hiermee schrijft u een geheel getal van systeemeigen grootte naar onbeheerd geheugen op een opgegeven offset.
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)
Parameters
- ptr
-
IntPtr
nativeint
Het basisadres in niet-beheerd geheugen waarnaar moet worden geschreven.
- ofs
- Int32
Een extra byte-offset, die wordt toegevoegd aan de ptr parameter voordat u schrijft.
- val
-
IntPtr
nativeint
De waarde die moet worden geschreven.
- 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
Deze methode schrijft een 32-bits geheel getal op 32-bits systemen en een 64-bits geheel getal op 64-bits systemen.
WriteIntPtr 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.Copy) naar een afzonderlijke beheerde matrix worden geëlimineerd voordat de elementwaarden worden ingesteld.
Schrijven naar niet-uitgelijnde geheugenlocaties wordt ondersteund.
Zie ook
Van toepassing op
WriteIntPtr(Object, Int32, IntPtr)
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
- Bron:
- Marshal.cs
Let op
WriteIntPtr(Object, Int32, IntPtr) may be unavailable in future releases.
Hiermee schrijft u een systeemeigen geheel getalwaarde van de processor naar onbeheerd geheugen.
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);
[System.Obsolete("WriteIntPtr(Object, Int32, IntPtr) may be unavailable in future releases.")]
[System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available")]
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);
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.")>]
[<System.Security.SecurityCritical>]
static member WriteIntPtr : obj * int * nativeint -> unit
[<System.Obsolete("WriteIntPtr(Object, Int32, IntPtr) may be unavailable in future releases.")>]
[<System.Diagnostics.CodeAnalysis.RequiresDynamicCode("Marshalling code for the object might not be available")>]
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
static member WriteIntPtr : obj * int * nativeint -> unit
[<System.Security.SecurityCritical>]
static member WriteIntPtr : obj * int * nativeint -> unit
Public Shared Sub WriteIntPtr (ptr As Object, ofs As Integer, val As IntPtr)
Parameters
- ptr
- Object
Het basisadres in het niet-beheerde geheugen van het doelobject.
- ofs
- Int32
Een extra byte-offset, die wordt toegevoegd aan de ptr parameter voordat u schrijft.
- val
-
IntPtr
nativeint
De waarde die moet worden geschreven.
- 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
WriteIntPtr maakt directe interactie mogelijk met een niet-beheerde bytematrix in C-stijl, 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 ingesteld.
Schrijven naar niet-uitgelijnde geheugenlocaties wordt ondersteund.