ЛБ>Я только что изучил comip.h и во всех конструкторах _com_ptr_t нашел AddRef либо QueryInterface. ЛБ>Противное было бы странно, уж очень интенсивно их пользуют во всем мире.
ЛБ>Но так ли это, что при создании ты делаешь QueryInterface? ЛБ>Знаешь ли ты, что CComObject::CreateInstance дает объект с нулевым счетчиком?
ЛБ>Лазар
знаю, поэтому сразу после создания в сервере делаю QueryInterface — и интерфейс пускай лежит, и счетчик = 1, чтобы работать с объектом можно было.
НО потом мне приходится делать дополнительный аддреф, дабы после возврата из события объект жив остался.
Сейчас заменил входной параметр функции-обработчика на просто ВашИнтерфейс*. Все работает, ссылки не теряются, как и следовало ожидать. Но если опять заменю параметр на ВашИнтерфейсPtr — получу потерянную ссылку.
Соответственно получается, что не используется конструктор... Или как?.. Не понимаю =(