windows – COM / Automation如何在引擎盖下进行IPC?

发布时间:2020-10-07 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了windows – COM / Automation如何在引擎盖下进行IPC?编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在最简单的形式中,COM允许您在应用程序中从DLL实例化类C类.基本上它是LoadLibrary的一个美化包装器和一些关于接口的约定.这是使用进程内组件调用的.

但COM也支持进程外组件.如果从这样的组件实例化一个类,COM将启动一个新进程.你的对象生活在这个过程中,并且被透明地编组到你身上,所以你不太关心他们住在哪里.他们甚至可能在不同的计算机(DCOM)上.您还可以从已在运行的应用程序中获取对象.一个众所周知的例子是通过脚本控制MS Office.这称为自动化(以前称为OLE自动化,并且对于该术语究竟涵盖的内容存在一些混淆).

有几篇很好的文章解释了(在进程中)COM如何工作低级(例如COM from scratch.我想知道当你的组件处于进程外时它是如何工作的.特别是,COM在COM下面使用了什么在进程之间进行通信的窗口?窗口消息,共享内存,套接字或其他东西?MSDN lists COM as an IPC method by itself,但我猜它必须使用下面的其他东西.在不同的情况下使用不同的IPC方法(从C实例化OOP组件),从VBScript访问Excel文档,通过OLE将文档嵌入到另一个文件中?看起来它是完全相同的基础技术.最后,编组如何适应图片?我认为有必要序列化方法参数进行传输进程之间,对吗?

解决方法

根据 this MSDN article,它是RPC.

实例化OOP组件时,COM子系统会生成进程内代理.此代理负责打包参数和解包返回值.它还在服务器进程中生成存根,期望解包参数和打包返回值.

有趣的是,整个编组过程可以通过实施IMarshal来定制.

总结

以上是编程之家为你收集整理的windows – COM / Automation如何在引擎盖下进行IPC?全部内容,希望文章能够帮你解决windows – COM / Automation如何在引擎盖下进行IPC?所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478
编程之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!