x64架构上的COM调用约定

7

我正在尝试获取关于COM在x64机器上的行为方式的明确答案。当在x64机器上分派对COM接口的调用时(假设COM实现是64位),Windows是否使用正常的x64调用约定?具体而言,我动态生成我的vtbl条目,将其指向在运行时动态加载的一块汇编代码。这个汇编代码需要知道如何从调用它的人那里正确地获取参数。因此,我想知道COM是否使用标准的x64调用约定(基本上是fastcall)来设置对我的汇编代码的调用。

1个回答

3

COM 调用约定是由 STDMETHOD/STDMETHODIMP 宏定义的。在 IA-32 上,大多数宏使用 stdcall;我不知道 x86-64 上使用什么(我只安装了 32 位 mingw 交叉编译器)。


当编译为amd64时,stdmethod无法解析。因此,我会认为在x64上的COM调用约定是正常的x64调用约定,即使Windows分派调用? - Zach
这可能是普通的 Windows x86-64 方法调用约定(与非方法的调用约定可能不同)。 - CesarB
x64有一种独特的调用约定:fastcall - lsalamon
很棒的答案,甚至没有回答任何问题。x64有自己独特的调用约定,类似于fastcall。没有更多的调用约定关键字,所以显然STDMETHOD宏不会产生任何结果。 - Andrey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接