2010-11-29 3 views
2

Я реализовал COM-сервер внепроцесса (реализованный в Сервисе). Я не хочу, чтобы другие приложения имели доступ ко всем функциям на COM-сервере, поэтому я разработал сервер proc-proc (DLL), который будет разговаривать с сервером вне процессора.Экспорт подмножества COM-сервера вне очереди с использованием встроенного сервера

Поскольку я не хочу, чтобы интерфейсы на внешнем COM-сервере были доступны напрямую, я не внедряю библиотеку типов с Сервисом, поэтому я думал, что могу использовать #import и иметь доступ к COM-сервер через TLB. Тем не менее, когда я пытаюсь запустить in-proc-сервер для создания экземпляра класса, реализованного в службе, я получаю E_NOINTERFACE. Я думаю, это связано с сортировкой, но я не мог понять, как это преодолеть.

Любая идея о том, как общаться с in-proc-сервером с моим внепроцессным сервером, не подвергая деталям интерфейса серверу внепроцесса?

+0

В дополнение к моему, возможно, неправильному ответу я задал следующий вопрос: http://stackoverflow.com/questions/4311997/does-proxy-stub-expose-the-interface – sharptooth 2010-11-30 09:00:33

+0

Я пошел с методом proxy/stub. Я прочитал ваш вопрос, и это то, что меня тоже интересует: делает ли proxy/stub интерфейс? Я видел, что вы ответили на свой вопрос, но ответ еще не ясен. – 2010-12-01 22:59:33

ответ

0

Я не уверен, как это поможет скрыть интерфейсы, но there're three ways to make marshalling working и typelib является одним из них. Другой довольно простой способ - прокси/заглушка - куча кода на отдельном COM-сервере proc, который автоматически выполнит сортировку после регистрации в реестре Windows. Опять же, я не уверен, как это поможет упростить интерфейс, но выглядит более скрытным, чем библиотека типов, которая просто предоставляет интерфейс любому, у кого есть OLEView.