存储 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 );
|