关于自动化与vTable两种暴露接口的区别-1未完......

Posted on 2018-04-11 09:11  moisiet  阅读(158)  评论(0编辑  收藏  举报

COM组件有两种暴露组件接口的方式,一种是以虚拟列表的方式暴露;一种就是自动化方式。

虚拟列表(VTable):

COM组件将自己所有的方法的地址以一个虚拟表的方式存放在一起,这个虚拟表是一种结构,有内存有地址。虚拟表内函数的排列顺序是IUnknown接口的三个函数在最前面,IDispatch的四个函数占据4-8位置,余下的位置按照函数声明的顺序排列。

最为重要的是:com组件将这个虚拟列表的指针的指针返回给客户,这个指针的指针就是暴露给客户供客户访问com组件的唯一入口。

虚拟列表中所有函数在编译期间已经是确定的了,因此可以在编译期做类型检查,这种方式速度快,鲁棒性高。

但是:缺点是虚拟列表方式访问组件在解释性语言中不被接受。

自动化:

自动化是在运行期实现函数后绑定的(不明白怎么回事)