COM组件原理
来源:互联网 发布:淘宝子账户和主账户 编辑:程序博客网 时间:2024/05/24 00:01
在COM中,接口就是一个抽象类,每个接口有一个接口ID(uuid)。一个COM组件通常是连续继承下来的类,比如 IUNknow ->IDispath->IXX->CXX。这就形成了一个COM组件,当然组件一般是一个钻石继承的样子,这里为了简化原理把他们当成一个串形继承下来。
每个COM组件都有一个CLSID(uuid),这个CLSID是注册的时候写进注册表的,可以把这个CLSID理解为这个组件最终可以实例化的子类的一个ID。这样就可以通过查询注册表中的CLSID来找到COM组件所在的dll的名称。然后调用的时候。会调用DllGetClassObject()函数, 这个函数中第一个参数是CLSID,表明想要调用DLL中的哪个组件(需要提醒的是,一个DLL中不一定只有一个组件)。第二个参数为IID。表明要返回这个组件的哪个接口。一般都会有IUnKnow 和IDispath接口。如果想用到IXX接口,就可以使用接口查询来转成IXX接口。如果想使用接口调度,不包含IXX的头文件来调用IXX的方法,就可以使用IDispath接口的Invoke方法。
需要注意的是:COM可以看作一种框架,但这个框架可大可小。有时候我们不需要太多的其它功能。就会对这个框架精简一些(如windows登录机制里的CP)。但原理还是一样的。所以遇到COM组件的时候不要一根筋,非要纠结这个与标准的COM的不同之处。
阅读全文
0 0
- COM组件原理
- 创建COM组件的原理
- .Net调用Office Com组件的原理及问题
- .Net调用Office Com组件的原理及问题
- .Net调用Office Com组件的原理及问题
- COM组件
- com组件
- COM组件:
- com组件
- COM组件
- COM组件
- COM组件
- COM组件
- com组件
- COM组件
- COM组件
- COM组件
- COM组件
- 微信分享功能
- 也来谈谈IT培训
- Windows上安装MySQL
- soj3366: Watering Hole_最小生成树Prim
- mysql安装教程(zip,和msi)
- COM组件原理
- echarts自定义功能按钮图片 网络路径格式
- 微擎上传图片
- 用DateTime.ToString(string format)输出不同格式的日期
- 日志框架搭建之我见
- commitallowingstateloss 和commit的区别
- dubbo Thread pool is EXHAUSTED-故障排除
- [PAT]1013. Battle Over Cities (25)@Java
- 武汉淘宝,面试感受