Получение указателя на существующий COM-объект?

Как вы получаете указатель на существующий COM-объект, который был создан на том же компьютере, в другом процессе?

у меня есть Поставщик учетных данных который создает объект, который наследует ICredentialProvider. ICredentialProvider имеет метод SetSerialization.

У меня также есть служба, из которой мне нужно вызвать метод SetSerialization провайдера учетных данных. Дело в том, что у меня есть опыт в C ++, но я новичок в COM, поэтому я не знаю как. от Microsoft образец ‘CSampleProvider’s в комментариях говорится, что нужно вызвать метод SetSerialization из «удаленного клиента», но не объясняю, как — я предполагаю, что они предполагают, что вы знаете COM.

Я читаю MSDN и различные учебные пособия о COM весь день, и я дошел до точки, где я могу создать экземпляр моего провайдера учетных данных в службе, но мне нужно получить указатель на уже существующий объект провайдера учетных данных, а не создать новый, и я не могу узнать, как это сделать.

Как это сделать?

Благодарю.

1

Решение

Канонический метод через Running Object Table. Это предполагает, что у объекта есть «moniker», то есть COM-имя, и что этот moniker зарегистрирован.

Обратите внимание, что ROT является формой IPC, а именно системным каталогом объектов COM.

1

Другие решения

Как сказал Раймонд, короче говоря, вы не можете — по крайней мере, с помощью встроенных функций COM. Если необходимо, его нужно будет передать через какую-то форму Межпроцессного взаимодействия.

0