Windows의 COM(Component Object Model)에서는 함수 호출 규약이 좀 특이하던데.

COM이 C++로 됐다는 건 알지? 근데 C++의 __thiscall 호출 규약은 this 포인터를 ECX 레지스터를 이용해 넘기는 방식인데

COM의 메서드들은 이런 느낌으로 호출된다.


C++ 메서드 예)

int ObjectA::methodA(int param1);


실제 호출 규약)

HRESULT __stdcall ObjectA::methodA(ObjectA *this, int *pOut, int param1);


output이 없으면 두번째 인자인 int *pOut 매개 변수는 없어지고.


저건 뭐 정해진 호출 규약 이름이 없음? 언젠가인가 __comthiscall이라는 이름을 문득 본 거 같기도 하고...