The oracle always tells the truth, even when it is wrong: COM method calls with a user-defined type as a return value - The Old New Thing
COM method calls follow the STDMETHODCALLTYPE calling convention, which is defined to be __stdcall. And the COM ABI for the layout of the virtual method call table was carefully chosen so that it matched the code generation of the Microsoft Visual C++ compiler.