Speichern eines 64-Bit-Werts

Verwenden Sie zum Speichern eines 64-Bit-Zeigerwerts ULONG_PTR. 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. Kommentare zu den Schritten, um den Code 64-Bit-kompatibel zu machen, ist enthalten.

Beispiel 1: Abrufen einer Adresse

Der folgende Code veranschaulicht eine portierbare Methode zum Abrufen einer Adresse.

Methode Ergebnis
Verwenden von ULONG (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.

Methode Ergebnis
Verwenden von ULONG (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 );