DCOM - передача интерфейсов м/у клиентом и сервером

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: DCOM - передача интерфейсов м/у клиентом и сервером

Владимир » 14 июн 2005, 14:11

Спасибо за помощь. Вроде как разобрался в чем причина: нужно было объявить IPropertyLink в операторе библиотеки сервера (клиент должен видеть этот интерфейс, чтобы создать объект-приемник - "механизм двустороннего обмена информацией с помощью косвенно-вызываемого интерфейса")

library SERVERLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");

interface IPropertyLink;
...

Eugie » 12 июн 2005, 17:39

На первый взгляд возможные причины: 1) клиент не реализует интерфейс IID_IPropertyLink; 2) IID_IPropertyLink не зарегистрирован на сервере.

Владимир » 10 июн 2005, 12:51

GetUnknown() возвращает cссылку на базовый интерфейс IUnknown* текущего объекта клиента

Eugie » 10 июн 2005, 01:16

А что возвращает GetUnknown()?

DCOM - передача интерфейсов м/у клиентом и сервером

Владимир » 09 июн 2005, 20:03

Привет всем. Помогите решить проблему, суть которой в следующем: есть клиент(dll) и сервер(exe), который запускается на удаленной машине. В клиенте при активации сервера CoCreateInstanceEx(CLSID_COMdev,NULL,CLSCTX_REMOTE_SERVER,&csi,1,qi) я получаю нужный интерфейс
m_iCOMdev = (ICOMdev*)qi[0].pItf, а затем вызываю метод сервера, через параметры которого хочу передать ссылку на интерфейс клиента m_iCOMdev->OpenConnection(GetUnknown()).
Когда на сервере пытаюсь получить конкретный интерфейс клиента

STDMETHODIMP CCOMdev::OpenConnection(IUnknown *pLink)
......
IPropertyLink *piLink = NULL;
hr = pLink->QueryInterface(IID_IPropertyLink,(void**)&piLink);
.......
метод возвращает E_FAIL.
Для пересылки интерфейсов использую универсальный маршалинг.
Что делать?

Вернуться к началу