Определение типа application (managed/unmanaged)
От: Udger http://www.artfulbits.com
Дата: 14.09.05 15:23
Оценка:
Servus!

Есть ассембли с COM-visible классом.
Существует ли способ узнать где клас юзают — в managed application или в unmanaged через COM-interop.

10x in advance.
Re: Определение типа application (managed/unmanaged)
От: vitaly_spb Россия  
Дата: 14.09.05 15:52
Оценка:
U>Существует ли способ узнать где клас юзают — в managed application или в unmanaged через COM-interop.

Чисто академический вопрос или реально для чего-то нужно? В чем задача?
...Ei incumbit probatio, qui dicit, non qui negat...
Re[2]: Определение типа application (managed/unmanaged)
От: Udger http://www.artfulbits.com
Дата: 14.09.05 16:12
Оценка:
Здравствуйте, vitaly_spb, Вы писали:

U>>Существует ли способ узнать где клас юзают — в managed application или в unmanaged через COM-interop.


_>Чисто академический вопрос или реально для чего-то нужно? В чем задача?


Нужно заказчику. К сожаленею, ничего больше сказать не могу.
Re: Определение типа application (managed/unmanaged)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 14.09.05 16:44
Оценка:
Здравствуйте, Udger, Вы писали:

U>Есть ассембли с COM-visible классом.

U>Существует ли способ узнать где клас юзают — в managed application или в unmanaged через COM-interop.

Навскидку — просмотреть CallStack и убедится в том, что там нет наверху CCW.
... << RSDN@Home 1.2.0 alpha rev. 617>>
AVK Blog
Re[2]: Определение типа application (managed/unmanaged)
От: Udger http://www.artfulbits.com
Дата: 14.09.05 17:31
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Навскидку — просмотреть CallStack и убедится в том, что там нет наверху CCW.

Ну а если будет лишний переход (managed -> unmanaged ActiveX -> managed COM-visible class), e.g. Visual Studio add-in tool window?

http://groups.google.com/group/microsoft.public.dotnet.framework.clr/browse_frm/thread/4fd08d8c56bf2e46?page=end&amp;
Re: Определение типа application (managed/unmanaged)
От: TK Лес кывт.рф
Дата: 15.09.05 01:19
Оценка:
Здравствуйте, Udger, Вы писали:

U>Есть ассембли с COM-visible классом.

U>Существует ли способ узнать где клас юзают — в managed application или в unmanaged через COM-interop.

Открываешь mscoree.h смотришь там интерфейсы. Например, IManagedObject. Думаешь. Собственно, .NET примерно так и работает. Если, при вызове из managed кода объект поддерживает спеуциальный интерфес, то сразу запрашивается managed ссылка и дальше, все вызовы идут напрямую. Можно, вставить логгер в QueryInterface и посмотреть что хотят.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Определение типа application (managed/unmanaged)
От: TK Лес кывт.рф
Дата: 15.09.05 01:31
Оценка:
Здравствуйте, TK, Вы писали:

TK>Открываешь mscoree.h смотришь там интерфейсы. Например, IManagedObject. Думаешь. Собственно, .NET примерно так и работает. Если, при вызове из managed кода объект поддерживает спеуциальный интерфес, то сразу запрашивается managed ссылка и дальше, все вызовы идут напрямую. Можно, вставить логгер в QueryInterface и посмотреть что хотят.


Хотя, это решение несколько "в другую сторону" Можно COMVisible класс опубликовать через специальный перехватчик. Так, что-бы все COM вызовы перехватывались им а потом, передавались дальше. Если перехватчик не сработает то, вызывающий код managed.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[3]: Определение типа application (managed/unmanaged)
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 15.09.05 07:18
Оценка:
Здравствуйте, Udger, Вы писали:

AVK>>Навскидку — просмотреть CallStack и убедится в том, что там нет наверху CCW.

U>Ну а если будет лишний переход (managed -> unmanaged ActiveX -> managed COM-visible class),

Фреймворк такие переходы устраняет. Т.е. к примеру, затолканый через COMовский ISelectionContainer в PropertyGrid компонент изнутри получает прямую ссылку на PropertyGrid, а не СОМ-обертку.
... << RSDN@Home 1.2.0 alpha rev. 617>>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.