Archiviazione di un valore a 64 bit

Per archiviare un valore puntatore a 64 bit, usare ULONG_PTR. Un valore ULONG_PTR è 32 bit quando viene compilato con un compilatore a 32 bit e 64 bit quando viene compilato con un compilatore a 64 bit.

Gli esempi seguenti usano codice reale che è stato convertito in Windows a 64 bit. Il commento sui passaggi per rendere compatibile il codice a 64 bit è incluso.

Esempio 1: Recupero di un indirizzo

Il codice seguente illustra un modo portabile per ottenere un indirizzo.

Metodo Risultato
Uso di ULONG (metodo solo a 32 bit)
ULONG getAnAddress( )Int *somePointerReturn( (ULONG) somePointer );
Uso di ULONG_PTR (metodo portabile)
ULONG_PTR getAnAddress( )Int *somePointerReturn( (ULONG_PTR) somePointer );

 

Esempio 2: Calcolo di un indirizzo

Il codice seguente illustra un modo portabile per calcolare un indirizzo.

Metodo Risultato
Uso di ULONG (metodo solo a 32 bit)
Int *somePointer;Int *someOtherPointer;somePointer = (int *)( (ULONG)someOtherPointer + 0x20 );
Uso di ULONG_PTR (metodo portabile)
Int *somePointer;Int *someOtherPointer;somePointer = (int *)( (ULONG_PTR)someOtherPointer + 0x20 );