2008-10-29 23 views
7

Próbuję uzyskać ostateczną odpowiedź na temat sposobu COM zachowuje na komputerze x64. Czy system Windows używa normalnej konwencji wywołania x64 podczas wysyłania wywołań do interfejsów COM na maszynach x64 (zakładając, że implementacja COM ma 64 bity)? W szczególności dynamicznie generuję wpisy vtbl, aby wskazywały na fragment zestawu, który jest dynamicznie ładowany podczas wykonywania. Ten zespół musi wiedzieć, jak poprawnie uzyskać parametry od tego, kto go wywołuje. W związku z tym chciałbym wiedzieć, czy COM ustawia wywołanie do mojego zestawu przy użyciu standardowej konwencji wywoływania x64 (prawie fastcall).Konwencja wywoływania COM na x64

Odpowiedz

3

Konwencja wywołująca COM jest taka sama, jak określa to makra STDMETHOD/STDMETHODIMP (i ich warianty). Na IA-32 dla większości z nich jest to stdcall; Nie wiem, co jest używane na x86-64 (mam tylko 32-bitowy cross-kompilator zainstalowany).

+0

stdmethod rozwiązuje problem przy kompilacji dla amd64. Zakładam więc, że konwencja wywoływania COM na x64 jest normalną konwencją wywołania x64, nawet jeśli okna wywołują wywołanie? – Zach

+0

To prawdopodobnie normalna konwencja wywoływania metod Windows x86-64 (która może różnić się od konwencji wywoływania dla metod niebędących metodami). – CesarB

+0

x64 ma unikalną konwencję wywoływania: [fastcall] (http://blogs.msdn.com/oldnewthing/archive/2004/01/14/58579.aspx) – lsalamon

Powiązane problemy