存储 64 位值

若要存储 64 位指针值,请使用 ULONG_PTR。 使用 32 位编译器编译时 ,ULONG_PTR 值为 32 位,使用 64 位编译器编译时为 64 位。

以下示例使用已移植到 64 位 Windows 的实际代码。 包含有关使代码兼容 64 位的步骤的注释。

示例 1:获取地址

以下代码演示了获取地址的可移植方法。

方法 结果
使用 ULONG (仅限 32 位的方法)
ULONG getAnAddress( )Int *somePointerReturn( (ULONG) somePointer );
使用ULONG_PTR (可移植方法)
ULONG_PTR getAnAddress( )Int *somePointerReturn( (ULONG_PTR) somePointer );

 

示例 2:计算地址

以下代码演示了一种可移植的地址计算方法。

方法 结果
使用 ULONG (仅限 32 位的方法)
Int *somePointer;Int *someOtherPointer;somePointer = (int *)( (ULONG)someOtherPointer + 0x20 );
使用ULONG_PTR (可移植方法)
Int *somePointer;Int *someOtherPointer;somePointer = (int *)( (ULONG_PTR)someOtherPointer + 0x20 );