Convención de llamada COM en x64
-
05-07-2019 - |
Pregunta
Estoy tratando de obtener una respuesta definitiva sobre el comportamiento de COM en una máquina x64. ¿Windows usa la convención de llamadas x64 normal cuando envía llamadas a interfaces COM en máquinas x64 (suponiendo que la implementación de COM es de 64 bits)? Específicamente, genero dinámicamente mis entradas vtbl para apuntar a un fragmento de ensamblaje que se carga dinámicamente durante el tiempo de ejecución. Este conjunto debe saber cómo obtener los parámetros correctamente de quien lo esté llamando. Por lo tanto, me gustaría saber si COM configura la llamada a mi ensamblaje utilizando la convención estándar de llamadas x64 (prácticamente llamada rápida).
Solución
La convención de llamada COM es lo que sea que las macros STDMETHOD / STDMETHODIMP (y sus variantes) definan como sea. En IA-32, es stdcall
para la mayoría de ellos; No sé qué se usa en x86-64 (solo tengo instalado el compilador cruzado Mingw de 32 bits).