Экспорт подмножества COM-сервера вне процесса с использованием in-proc-сервера - PullRequest
2 голосов
/ 30 ноября 2010

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

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

Есть идеи о том, как связаться с in-proc-сервером с моим сервером out-of-proc без раскрытия деталей интерфейса сервера out-of-proc?

1 Ответ

0 голосов
/ 30 ноября 2010

Я не уверен, как это поможет объединить интерфейсы, но есть три способа заставить маршаллинг работать , и typelib - один из них.Другой довольно простой способ - это прокси / заглушка - набор кода на отдельном внутрипроцессорном COM-сервере, который автоматически выполняет маршалинг после его регистрации в реестре Windows.Опять же, я не уверен, как это поможет скрыть интерфейс, но он выглядит более скрытно, чем библиотека типов, которая просто предоставляет интерфейс любому, кто имеет OLEView.

...