正在获取指向现有COM对象的指针

Getting a pointer to an existing COM object?

本文关键字:COM 对象 指针 获取 取指      更新时间:2023-10-16

如何获取指向在同一台机器上、不同进程中创建的现有COM对象的指针?

我有一个凭据提供程序,它创建了一个继承ICredentialProvider的对象。ICredentialProvider有一个方法SetSerialization。

我还有一个服务,我需要从中调用凭据提供程序的SetSerialization方法。问题是,我在C++方面很有经验,但我是COM的初学者,所以我不知道怎么做。微软的示例"CSampleProvider"评论说从"远程客户端"调用SetSerialization方法,但没有解释如何调用——我想他们假设你知道COM.

我一整天都在阅读MSDN和各种关于COM的教程,我已经到了可以在服务中创建凭据提供程序实例的地步,但我需要获得一个指向已经存在的凭据提供程序对象的指针,而不是创建一个新的,我不知道如何创建。

它是如何完成的?

谢谢。

规范方法通过Running Object Table。这假设对象有一个"名字对象",即COM名称,并且该名字对象已注册。

请注意,ROT是IPC的一种形式,特别是COM对象的系统范围目录。

正如Raymond所说,简而言之,你不能——至少任何内置的COM功能都不能。如果必须,则需要通过某种形式的进程间通信进行传递。