Re[2]: [default.source] дуальные интерфейсы и позднее связыв
От: SloNN  
Дата: 24.04.03 09:04
Оценка:
Здравствуйте, Plutonia Experiment, Вы писали:

Да, я забыл сказать с самого начала, что интерфейс, на котором я перехватываю события — дуальный.
Когда я загружаю tlb, я проверяю на то, что интерфейс, на котором нужно перехватывать события — дуальный, только тогда начинаю делать advise на нем.


PE>Это большой недостаток коннекшн поинтов. Обычно используется диспинтерфейс.

PE>Обойти можно, но есть много телодвижений.

Если не секрет — то как? У меня был только один вариант, что сделать перехват native вызовов к интерфейсу типа того, как сделано в ATL _QIThunk( ставя свои обработчики на первые 1024 метода интерфейса) и переделывает его в вызовы диспатча, но мне показалось это каким-то корявым.


PE>Обычно все исходящие интерфейсы являются наследниками от IDispatch.

PE>Если есть диспатч — работай с ним. Если нет — работай напрямую.
PE>Все это можно выяснить из конкретного интерфейса.

PE>Обычно эта ответственность лежит на сервере.

PE>IE, например, проверяет на IDispatch.

Да, я видел, но только не совсем понял зачем он это делает? Был у меня, конечно, вариант, что он просто делает запрос к IDispatch и отвечает в QueryInterface S_OK на IID_Event, если IID_Event дуальный интерфейс и я поддержал IDispatch.

PE>Ну и нужно делать дуальный интерфейс, если в IID_Event засовываешь в QueryInterface.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.