Привет всем!!! Вот изучаю COM технологию по книге Дейла Роджерсона — "Основы COM", разбираю пример с дуальным интерфейсом.
Имеется интерфейс IOperation, который содержит следующую функцию:
HRESULT __stdcall CMath::Summa(long fp_a, long fp_b, long* fp_c)
{
*fp_c = fp_a + fp_b ;
return S_OK ;
}
Если пользуюсь интерфейсом через vtbl, то все нормально, а вот если через IDispatch, то че-то не могу получить результат.
Во-первых: результат должен быть получен так же через третий параметр метода Summa, или же через 6-ой параметр метода Invoke???
На сервере Invoke реализована так:
HRESULT __stdcall CMath::Invoke(
DISPID dispidMember,
const IID& iid,
LCID, // Localization is not supported.
WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pvarResult,
EXCEPINFO* pExcepInfo,
UINT* pArgErr)
{
if (iid != IID_NULL)
{
return DISP_E_UNKNOWNINTERFACE ;
}