Есть com объект реализованный в отдельном процессе.
Получаю com интерфейс при помощи GetInterfaceFromGlobal (IGlobalInterfaceTable).
Если com объект завершит свою работу (exception, ....) GetInterfaceFromGlobal все равно вернет указатель на запрашиваемый интерфейс и не выдаст ошибки, причем вызов функции из полученного интерфейса также отработает без падений и прочего.
Здравствуйте, fanruten, Вы писали:
F>Есть com объект реализованный в отдельном процессе.
F>Получаю com интерфейс при помощи GetInterfaceFromGlobal (IGlobalInterfaceTable). F>Если com объект завершит свою работу (exception, ....) GetInterfaceFromGlobal все равно вернет указатель на запрашиваемый интерфейс и не выдаст ошибки, причем вызов функции из полученного интерфейса также отработает без падений и прочего.
Смотря какая функция, некоторые функции IUnknown интерфейса может отрабатывать прокси. Но, как правило, вызов методов несуществующего объекта должен отрабатывать с ошибкой. Просто потому, что СОМ не найдет адресат.
F>Как понять что com объект не функционирует?
В стандарте утверждается, что в этом случае вызов необходимого метода должен завершаться с ошибкой.
Здравствуйте, fanruten, Вы писали:
F>Есть com объект реализованный в отдельном процессе.
F>Получаю com интерфейс при помощи GetInterfaceFromGlobal (IGlobalInterfaceTable). F>Если com объект завершит свою работу (exception, ....) GetInterfaceFromGlobal все равно вернет указатель на запрашиваемый интерфейс и не выдаст ошибки, причем вызов функции из полученного интерфейса также отработает без падений и прочего.
F>Как понять что com объект не функционирует?
Прокси должен вернуть ошибку.
А сам процесс-то живой?
Сложилось такое впечатление, что да, и в нем имеет место быть interface leak.