Stockage d’une valeur 64 bits

Pour stocker une valeur de pointeur 64 bits, utilisez ULong _ ptr. Une valeur _ ptr ULONG est 32 bits quand elle est compilée avec un compilateur 32 bits et 64 bits lorsqu’elle est compilée avec un compilateur 64 bits.

Les exemples suivants utilisent du code réel qui a été porté à la Windows 64 bits. Des commentaires sur les étapes permettant de rendre le code compatible 64 bits sont inclus.

Exemple 1 : obtention d’une adresse

Le code suivant illustre un moyen portable d’obtenir une adresse.

| | | Utilisation de ULONG (méthode 32 bits uniquement) |

ULONG getAnAddress( )Int *somePointerReturn( (ULONG) somePointer );
| | Utilisation de ULONG_PTR (méthode portable) |
ULONG_PTR getAnAddress( )Int *somePointerReturn( (ULONG_PTR) somePointer );
|

Exemple 2 : calcul d’une adresse

Le code suivant illustre un moyen portable de calculer une adresse.

| | | Utilisation de ULONG (méthode 32 bits uniquement) |

Int *somePointer;Int *someOtherPointer;somePointer = (int *)( (ULONG)someOtherPointer + 0x20 );
| | Utilisation de ULONG_PTR (méthode portable) |
Int *somePointer;Int *someOtherPointer;somePointer = (int *)( (ULONG_PTR)someOtherPointer + 0x20 );
|