2008-10-29 21 views
7

COM bir x64 makinede davranır şekilde ilgili kesin bir yanıt almaya çalışıyorum. Windows x64 makinelerde COM arayüzlerine çağrı gönderirken normal x64 çağrı kuralını kullanır mı (COM uygulamasının 64 bit olduğunu varsayarak)? Özellikle, çalışma sırasında dinamik olarak yüklenen bir derleme kümesini işaret etmek için vtbl girişlerimi dinamik olarak oluşturuyorum. Bu derlemenin, kimin aradığını doğru olarak parametrelerin nasıl alınacağını bilmesi gerekiyor. Böylece, standart x64 çağrı kuralı (hemen hemen fastcall) kullanarak derlememi çağırmamı çağırırsa, bilmek isterim.COM çağrı kuralı x64 üzerinde

cevap

3

COM çağrı kuralı, STDMETHOD/STDMETHODIMP makroları (ve bunların varyantlarının) tanımladığı şeydir. IA-32 üzerinde, çoğu için stdcall; X86-64'te ne kullanıldığını bilmiyorum (sadece 32 bit mingw çapraz derleyici yüklü).

+0

stdmethod, amd64 için derleme yaparken hiçbirşeyi çözmez. Bu yüzden windows çağrıyı gönderdiğinde bile x64'teki COM çağrı kuralının normal x64 çağrı kuralı olduğunu varsayalım? – Zach

+0

Muhtemelen normal Windows x86-64 yöntem çağrı kuralı (yöntem olmayan yöntemlere yönelik çağrı sözleşmesinden farklı olabilir). – CesarB

+0

x64 benzersiz bir yol çağrısı kuralı vardır: [fastcall] (http://blogs.msdn.com/oldnewthing/archive/2004/01/14/58579.aspx) – lsalamon