Stockage d’une valeur 64 bits

Pour stocker une valeur de pointeur 64 bits, utilisez ULONG_PTR. Une valeur ULONG_PTR est 32 bits lorsqu’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é vers Windows 64 bits. Des commentaires sur les étapes à suivre pour rendre le code 64 bits compatible sont inclus.

Exemple 1 : Obtention d’une adresse

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

Méthode Résultats
Utilisation d’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.

Méthode Résultats
Utilisation d’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 );