Speichern eines 64-Bit-Werts
Verwenden Sie ULONG _ PTR, um einen 64-Bit-Zeigerwert zu speichern. Ein ULONG _ PTR-Wert ist 32 Bits, wenn er mit einem 32-Bit-Compiler kompiliert wird, und 64 Bits, wenn er mit einem 64-Bit-Compiler kompiliert wird.
In den folgenden Beispielen wird realer Code verwendet, der auf 64-Bit-Windows portiert wurde. Die Schritte zur 64-Bit-Kompatibilität des Codes sind enthalten.
Beispiel 1: Abrufen einer Adresse
Der folgende Code veranschaulicht eine portierbare Methode zum Abrufen einer Adresse.
| | | Verwenden von ULONG (eine nur 32-Bit-Methode) |
ULONG getAnAddress( )Int *somePointerReturn( (ULONG) somePointer ); | | Verwenden von ULONG_PTR (portable Methode) | ULONG_PTR getAnAddress( )Int *somePointerReturn( (ULONG_PTR) somePointer ); |
Beispiel 2: Berechnen einer Adresse
Der folgende Code veranschaulicht eine portable Methode zum Berechnen einer Adresse.
| | | Verwenden von ULONG (eine nur 32-Bit-Methode) |
Int *somePointer;Int *someOtherPointer;somePointer = (int *)( (ULONG)someOtherPointer + 0x20 ); | | Verwenden von ULONG_PTR (portable Methode) | Int *somePointer;Int *someOtherPointer;somePointer = (int *)( (ULONG_PTR)someOtherPointer + 0x20 ); |