2008-10-29 12 views
7

Estoy tratando de obtener una respuesta definitiva sobre la forma en que COM se comporta en una máquina x64. ¿Usa Windows la convención de llamadas x64 normal cuando envía llamadas a interfaces COM en máquinas x64 (suponiendo que la implementación COM sea 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 ensamblaje necesita saber cómo obtener los parámetros correctamente de quien lo llame. Por lo tanto, me gustaría saber si COM establece la llamada a mi ensamblado utilizando la convención de llamadas x64 estándar (casi llamada rápida).Convención de llamada COM en x64

Respuesta

3

La convención de llamadas COM es lo que definen las macros STDMETHOD/STDMETHODIMP (y sus variantes). 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 de mingw de 32 bits).

+0

stdmethod no se resuelve a nada cuando se compila para amd64. Así que supongo que la convención de llamadas COM en x64 es la convención de llamadas x64 normal, incluso cuando Windows envía la llamada. – Zach

+0

Probablemente sea la convención de llamada al método normal de Windows x86-64 (que podría ser diferente de la convención de llamadas para los no métodos). – CesarB

+0

x64 tiene una forma única de convención de llamadas: [fastcall] (http://blogs.msdn.com/oldnewthing/archive/2004/01/14/58579.aspx) – lsalamon

Cuestiones relacionadas