x64 上的 COM 调用约定

标签 com assembly 64-bit calling-convention

我试图获得关于 COM 在 x64 机器上的行为方式的明确答案。在向 x64 机器上的 COM 接口(interface)调度调用时,Windows 是否使用正常的 x64 调用约定(假设 COM 实现是 64 位)?具体来说,我动态生成我的 vtbl 条目以指向在运行时动态加载的程序集 block 。这个程序集需要知道如何正确地从调用它的人那里获取参数。因此,我想知道 COM 是否使用标准 x64 调用约定(几乎是 fastcall)设置对我的程序集的调用。

最佳答案

COM 调用约定是 STDMETHOD/STDMETHODIMP 宏(及其变体)定义的任何内容。在 IA-32 上,它是 stdcall对他们中的大多数人来说;我不知道在 x86-64 上使用什么(我只安装了 32 位 mingw 交叉编译器)。

关于x64 上的 COM 调用约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/248221/

相关文章:

visual-studio - VS 2012.3 引用 MS Access COM DLL,无法解析 COM 引用错误

excel - 通过Powershell关闭时无法停止所有Excel进程

c++ - 如何处理这个异常? (零特别是)

linux - 为什么 `__vfprintf_internal` (`printfn` 来自 `stdio.h` ) 强制 `$rbp` 在我的 x86-64 机器上向前跳转 6313864 字节?

c++ - 是否存在用于将 C++ 代码移植到 64 位的自动转换工具?

c# - 不使用 regasm.exe 的 VB6 中的 .NET 对象?

windows - 我是否需要编码 CreateStreamOnHGlobal 返回的 IStream,以便跨线程使用?

c++ - 如何解决忙等待许多正在运行的线程

windows - 免费的 Windows 64 位 C++11 编译器

macos - 操作系统 X : why does __LP64__ lead to pure virtual functions?