COM Сервер из двух приложений
От: batya1379  
Дата: 22.08.07 09:09
Оценка:
Доброго времени суток!

Столкнулся со следующей проблемой. Есть COM сервер, в котором происходит подключение к внешнему источнику, подключение должно быть одно.
Также есть два приложения, которые работают с этим COM. Соответственно хотелось бы чтобы не создавался отдельный инстанс в каждом приложении, а в случае уже запущенного подключенного сервера брался на него указатель (на данный момент пользую в Приложениях API функции QueryInterface и CoCreateInstance). Проблема заключается в том, что GetActiveObject по CLSID не находит объект (хотя он точно создан).

Сие есть ATL COM
class ATL_NO_VTABLE CMBTBroker :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CMBTBroker, &CLSID_MBTBroker>,
public I1,
public I2

I1 это интерфейс для первого а I2 интерфейс для второго приложения... Хотя, как я понимаю, сие абсолютно не важно для данной проблемы.

P.S. Модель CComSingleThreadModel менял на CComMultiThreadModel эффект тот же.
Re: COM Сервер из двух приложений
От: Аноним  
Дата: 22.08.07 23:11
Оценка:
Здравствуйте, batya1379, Вы писали:

COM Server должен быть как singleton определен...
Re[2]: COM Сервер из двух приложений
От: batya1379  
Дата: 27.08.07 12:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>COM Server должен быть как singleton определен...


Нельзя ли поподробней что вы имели ввиду... Т.е. что такое синглтон я себе представляю создавал синглтон в рамках приложения. Но как вы предлагаете привязать синглтон к COM Серверу? При создании COM я использовал стандартный Wizard ATL Simple Object в нем нет опции для создания синглтона.

Заранее спасибо за ответ.
Re: COM Сервер из двух приложений
От: Vi2 Удмуртия http://www.adem.ru
Дата: 28.08.07 06:21
Оценка:
Здравствуйте, batya1379, Вы писали:

B>Столкнулся со следующей проблемой. Есть COM сервер, в котором происходит подключение к внешнему источнику, подключение должно быть одно.

B>Также есть два приложения, которые работают с этим COM. Соответственно хотелось бы чтобы не создавался отдельный инстанс в каждом приложении, а в случае уже запущенного подключенного сервера брался на него указатель (на данный момент пользую в Приложениях API функции QueryInterface и CoCreateInstance). Проблема заключается в том, что GetActiveObject по CLSID не находит объект (хотя он точно создан).

Потому что нормальной работе GetActiveObject должен соответствовать вызов RegisterActiveObject, выполненный или самим этим объектом, или вообще сервером по собственной инициативе.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re: COM Сервер из двух приложений
От: johnic Россия  
Дата: 29.08.07 13:25
Оценка:
Добрый день. Для того, чтобы был 1 инстанс объекта, тебе не обходимо использовать такой макрос

DECLARE_CLASSFACTORY_SINGLETON(CMBTBroker)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.