2008-10-29 2 views
7

COM이 x64 시스템에서 작동하는 방식과 관련하여 확실한 답을 얻으려고합니다. Windows에서 x64 컴퓨터의 COM 인터페이스에 대한 호출을 디스패치 할 때 (COM 구현이 64 비트라고 가정) 일반적인 x64 호출 규칙을 사용합니까? 특히 런타임에 동적으로로드되는 어셈블리 청크를 가리 키도록 동적으로 vtbl 항목을 생성합니다. 이 어셈블리는 매개 변수를 호출하는 사람이 올바르게 매개 변수를 가져 오는 방법을 알아야합니다. 따라서 COM이 표준 x64 호출 규칙 (꽤 빠른 호출)을 사용하여 내 어셈블리에 대한 호출을 설정하는지 알고 싶습니다.x64의 COM 호출 규칙

답변

3

COM 호출 규칙은 STDMETHOD/STDMETHODIMP 매크로 (및 해당 변형)가 무엇이든 정의합니다. IA-32에서는 대부분이 stdcall입니다. 나는 x86-64에서 사용되는 것을 모른다. (나는 32 비트 밍 크로스 컴파일러 만 설치했다.)

+0

amd64 용으로 컴파일 할 때 stdmethod가 아무 것도 해결하지 않습니다. 따라서 x64의 COM 호출 규칙은 Windows가 호출을 전달하는 경우에도 일반적인 x64 호출 규칙이라고 가정합니다. – Zach

+0

아마도 일반적인 Windows x86-64 메서드 호출 규칙 (비 - 메서드에 대한 호출 규칙과 다를 수 있음) 일 수 있습니다. – CesarB

+0

x64에는 고유 한 방식의 호출 규칙이 있습니다. [fastcall] (http://blogs.msdn.com/oldnewthing/archive/2004/01/14/58579.aspx) – lsalamon