代码之家  ›  专栏  ›  技术社区  ›  Hernán

IDL中的可移植地址偏移参数

  •  1
  • Hernán  · 技术社区  · 15 年前

    我正在将旧的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服务器?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Larry Osterman    15 年前

    void*只能在[local]接口中使用-它不能被封送(无法知道void指针的大小或语义)。

    如果需要多态类型,请使用uu int3264。你说得对,因为自动化不支持多态类型,所以它不能与自动化一起使用。

    为什么不使用一个int64,把32位的值放入int64值?

    推荐文章