我对 Microsoft COM 技术不是很熟悉。简而言之,我有一个在可执行文件中实现的Microsoft 进程外 COM 服务器foo.exe
。环境是 C++ 和 Microsoft 基础类框架 (MFC)。
有一个客户端bar.exe
通过 Microsoft COM 技术使用 foo.exe 中的功能。在 foo.exe 中涉及一些动态链接库,它们也使用 COM 服务器 foo.exe 提供的功能(例如fooBar.dll
)。
到现在为止还挺好。我正在寻找一种方法来确定 COM 服务器 foo.exe 的客户端是否位于其他进程中,甚至与 foo.exe 位于同一进程中,例如上例中的 fooBar.dll。有谁知道这样的方式?
编辑:
换句话说:显然 COM 服务器foo.exe
可以充当进程内或进程外 COM 服务器。加上 Hans Passant 的评论和 Joe Willcoxson 的回答,他提议通过来解决调用 DLLGetModuleHandle
以确定 COM 服务器当前是否充当进程内服务器,以防我得到句柄时和我没有将句柄作为进程外服务器。因此,当 COM 服务器知道在同一进程中使用来自该服务器的功能的众所周知的 DLL 时,我们可以说 COM 服务器此时充当进程内服务器,而在其他情况下充当进程外服务器。 -进程服务器。我是否误解了某些事情,或者这些考虑是否正确?
我目前的调查没有提及,所以我希望社区中有一位了解手推车如何运行的 Microsoft COM 专家。
非常感谢您的帮助!