2009-12-21 10 views
6

Ich muss eine ULONG_PTR in unsicheren Code in C# übergeben.C# ULONG_PTR Äquivalent

Ich verstehe, dass der Grund für ULONG_PTR ist, eine einzige Codebasis für 32-Bit- und 64-Bit-Betriebssysteme zu ermöglichen.

Ist dies ein Fall für C# UIntPtr? Kann ich zuversichtlich sein, wenn ein .Net UIntPtr als ULONG_PTR Parameter übergeben wird?

Danke!

Antwort

6

Von MSDN:

Der IntPtr-Typ CLS-kompatibel, während der UIntPtr Typ nicht ist. Nur Der IntPtr-Typ wird in der gängigen Sprachlaufzeit verwendet. Der UIntPtr Typ ist vorgesehen meist architektonische Symmetrie mit dem IntPtr Typ

Beiden Arten von Speichern 32-Bit- und 64-Bit-Zeigern der Lage sind, zu halten. Der bevorzugte Typ ist IntPtr.

2

Basierend auf der MSDN Beschreibung davon würde ich sagen, dass es sein sollte:

wird

Der UIntPtr Typ entwickelt, um eine ganze Zahl, deren Größe ist plattformspezifisch. Das heißt, eine Instanz dieses Typs wird auf 32-Bit-Hardware und -Betriebssystemen mit 32 Bit und auf 64-Bit-Hardware und -Betriebssystemen mit 64 Bit erwartet.