避免多态性
新的数据类型包括两种多态类型, INT_PTR 和 LONG_PTR。 在 32 位 Windows 上, INT_PTR 映射到 int , LONG_PTR 映射到 long。 在 64 位 Windows 上,这两种类型都映射到 __int64 内部类型。 MIDL 编译器支持这些类型用于远程过程调用,但在分布式环境中使用这些类型时,必须牢记一个固有的限制。 请务必相应地注释代码。
无论平台大小如何,这些多态类型的线大小始终为 32 位。 在 64 位 Windows 上取消封送时,运行时库符号会扩展有符号值,并为无符号值的高阶字节分配零。 在线路上放置 64 位值时,运行时会截断高阶字节。 因此,只有低阶 32 位值才可用。
仅在需要移植时才使用多态类型。 对于新接口,请使用 MIDL 内部整数类型__int32和 __int64,或使用指针类型或上下文句柄,以哪种类型最适合所传输的数据类型为准。
64 位编译器支持新的多态内部 __int3264。 同样,此类型的开发旨在支持移植工作,在本例中,可以透明地支持 UINT_PTR 类型。 (另一个内部 函数(__long3264)将支持 ULONG_PTR 类型。) 请勿直接使用 __int3264 ;出于移植原因需要多态类型时,请使用 INT_PTR 类型。