如何从另一个进程中寻址由给定IUnknown*标识的COM对象?
How can I address a COM object identified by a given IUnknown* from another process?
我写了两个小的c++应用程序,其中一个是一个嵌入一些ActiveX控件的ActiveX容器。这个容器应用程序知道引用ActiveX控件的IUnknown*
。
另一个应用程序是一个客户端,它将与前一个应用程序中的ActiveX控件交互。但是,我不知道如何在客户端应用程序中获得控件的句柄。由于独立的地址空间,简单地将IUnknown*
的指针值从服务器传输到客户端当然是行不通的。
您可能想要查看一般的RPC和COM代理。
代理驻留在调用进程的地址空间中,充当远程对象的代理。从调用对象的角度来看,代理就是对象。通常,代理的角色是打包接口参数,以便在其对象接口中调用方法。代理将参数打包到消息缓冲区中,并将缓冲区传递到通道,通道处理进程之间的传输。代理被实现为聚合或组合对象。它包含一个系统提供的管理器,称为代理管理器,以及一个或多个特定于接口的组件,称为接口代理。接口代理的数量等于已公开给该特定客户端的对象接口的数量。对于遵循组件对象模型的客户端,代理似乎是真正的对象。
相关文章:
- 为什么示例代码访问IUnknown中已删除的内存
- 调用具有未标识类型的类的方法
- 函数返回的 rvalue 引用(表达式)是 xvalue - 但没有标识?
- OOP 标识派生对象
- assert() 在发布模式下充当标识函数吗?
- AddressSanitizer 将 std::vector<T>::p ush_back 标识为释放后堆使用错误的原因
- 标识gdb调试器中符号的源文件名
- 如何跳过 CMake 编译器标识?
- 如何创建一个程序来标识最长的子字符串回文,而不考虑字母大小写
- 具有基于标识的相等性的有序关联容器
- 标识线程
- 一种类型特征,标识哪个类提供通过重载解析选择的函数
- C++ - 在运行时从基类指针标识派生类
- 标识使用的设计模式名称
- 使用 lambda 修改由打包参数标识的引用
- 使用 googletest 在类型参数化测试中标识使用的基类
- 在 IUnknown 中添加和发布,它们实际上做了什么?
- 如何获取由文件标识的流对象?
- 何时在课堂上实现iunknown
- 如何从另一个进程中寻址由给定IUnknown*标识的COM对象?