IDL中的便携式地址偏移参数

时间:2010-11-12 16:26:47

标签: types 64-bit porting idl midl

我正在将旧的32位COM服务器移植到64位架构。

许多函数将缓冲区地址和偏移量作为参数,如__int3264和__int3264指针。问题是这种类型不会在x64中自动生成为__int64,因为接口是IDispatch继承的,而自动化接口不支持__int3264!

对于期望地址的函数,我将__int3264 *替换为void *。

偏移参数设置为__int3264和LONG(自动化中的32位+ x64)。我不能使用hyper(映射为__int64),因为它会在32位系统中中断。

我应该对所有偏移/地址参数使用void *还是有另一种方法将它们移植到x64 COM服务器?

1 个答案:

答案 0 :(得分:2)

void *仅在[local]接口中允许 - 它不能被编组(无法知道void指针的大小或语义)。

如果需要多态类型,请使用__int3264。你是对的,它不能用于自动化,因为自动化不支持多态类型。

为什么不使用__int64并将32位值放在__int64值中?

相关问题