64 ビット値の格納

64 ビット ポインター値を格納するには、 ULONG_PTRを使用します。 ULONG_PTR値は、32 ビット コンパイラでコンパイルされた場合は 32 ビット、64 ビットコンパイラでコンパイルされた場合は 64 ビットです。

次の例では、64 ビット Windows に移植された実際のコードを使用します。 コードを 64 ビット互換にする手順の解説が含まれています。

例 1: アドレスの取得

次のコードは、アドレスを取得する移植可能な方法を示しています。

Method 結果
ULONG の使用 (32 ビットのみのメソッド)
ULONG getAnAddress( )Int *somePointerReturn( (ULONG) somePointer );
ULONG_PTRの使用 (移植可能な方法)
ULONG_PTR getAnAddress( )Int *somePointerReturn( (ULONG_PTR) somePointer );

 

例 2: 住所の計算

次のコードは、アドレスを計算する移植可能な方法を示しています。

Method 結果
ULONG の使用 (32 ビットのみのメソッド)
Int *somePointer;Int *someOtherPointer;somePointer = (int *)( (ULONG)someOtherPointer + 0x20 );
ULONG_PTRの使用 (移植可能な方法)
Int *somePointer;Int *someOtherPointer;somePointer = (int *)( (ULONG_PTR)someOtherPointer + 0x20 );