COM组件有两种暴露组件接口的方式,一种是以虚拟列表的方式暴露;一种就是自动化方式。
虚拟列表(VTable):
COM组件将自己所有的方法的地址以一个虚拟表的方式存放在一起,这个虚拟表是一种结构,有内存有地址。虚拟表内函数的排列顺序是IUnknown接口的三个函数在最前面,IDispatch的四个函数占据4-8位置,余下的位置按照函数声明的顺序排列。
最为重要的是:com组件将这个虚拟列表的指针的指针返回给客户,这个指针的指针就是暴露给客户供客户访问com组件的唯一入口。
虚拟列表中所有函数在编译期间已经是确定的了,因此可以在编译期做类型检查,这种方式速度快,鲁棒性高。
但是:缺点是虚拟列表方式访问组件在解释性语言中不被接受。
自动化:
自动化是在运行期实现函数后绑定的(不明白怎么回事)