我正在将旧的32位COM服务器移植到64位体系结构。
许多函数将缓冲区地址和偏移量作为参数,如u int3264和u int3264指针。问题是,由于接口是IDispatch继承的,并且自动化接口不支持uu Int3264,因此在x64中,此类型不会自动生成为u Int64!
对于需要地址的函数,我将把uu int3264*替换为void*。
偏移参数被设置为uu int3264和long(在automation+x64中都是32位)。我不能使用hyper(映射为\ int64),因为它将在32位系统中中断。
我应该对所有偏移量/地址参数使用void*还是有其他方法将这些参数移植到x64 COM服务器?
void*只能在[local]接口中使用-它不能被封送(无法知道void指针的大小或语义)。
如果需要多态类型,请使用uu int3264。你说得对,因为自动化不支持多态类型,所以它不能与自动化一起使用。
为什么不使用一个int64,把32位的值放入int64值?