Инкапсулированные интерфейсы
От: Olik  
Дата: 26.12.02 08:31
Оценка:
Есть некий COM объект Х, который инкапсулирует интерфейс IMap(для делегирования).
В одном из интерфейсов объекта есть функция Init, которая вызывает CoCreateInstance для CMap, с запросом на интерфейс IMap.
CoCreateInstance возвращает ноль, интерфейс из нулл становится не нулл... все окей... но как только я эту функцию (в смысле Init) покидаю... интерфейс опять становится нулл.

Сервер реалзован как сервис NT.
Объект Х реализует фабрику классов с помощью макроса DECLARE_CLASSFACTORY_SINGLETON(Х).

Ни с тем ни с другим мне ранее работать не приходилось... подозреваю что в это-то все и дело =)...

Если у кого-нибудь есть соображения на счет того в чем собственно бага... буду весьма благодарна... заранее спасибо всем откликнувшимся
Re: Инкапсулированные интерфейсы (дополнение)
От: Olik  
Дата: 26.12.02 09:10
Оценка:
И еще забыла сказать...
При входе в конструктор СMap() должно вываливаться сообщение что туда зашли (для трейса)... так вот не! вываливается оно после вызова CoCreateInstance(CLSID_Map, ...).
Пробовала все то же самое сделать с просто классом (не интерфейс инкапсулировать а указатель на объект) в функцию Init запихала соответственно оператор new CMap()...и тоже не попадает в конструктор (или месага не вываливается... поди пойми =))... Разрешение на взаимодействие с десктопом у сервиса есть и другие месаги я вижу.
Может быть есть какой-то запрет на инициализацию объектов вне, к примеру, FinalConstruct()???
Кстати, была бы очень благодарна за советы по отладке такого типа приложений (в смысле локальных КОМ серверов), а то я раньше только DLL писала.
Re: Инкапсулированные интерфейсы
От: Toughpheeckouse Россия  
Дата: 26.12.02 09:21
Оценка:
Здравствуйте, Olik, Вы писали:

без кода тебе не помогут...
Думайте сами, решайте сами...
Re[2]: Инкапсулированные интерфейсы (дополнение)
От: MaximE Великобритания  
Дата: 26.12.02 09:27
Оценка:
Здравствуйте, Olik, Вы писали:

[]

Приведи код (idl, h, cpp), т.к. из объямнения сложно понять.

P.S. Интерфейсы не инкапсулируют, инкапсулируют состояние.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.