(一二三)
来源:互联网 发布:软件测试分类方法 编辑:程序博客网 时间:2024/04/20 22:09
<objbase.h> : #define interface struct
interface IUnkown
{
virtual HRESULT __stdcall QueryInterface(const IID& iid, void** ppv)=0;
virtual ULONG __stdcall AddRef() = 0;
virtual ULONG __stdcall Release()=0;
}
IUnkown 指针的获取:
IUnkown * CreateInstance()
IUnkown 包含 QueryInterface(),AddRef(),ReleaseRef(),三个函数。所有COM组件都要继承这个类,此类并非虚拟类。
QueryInterface() 对所有的 IUnkown 接口查询请求必须返回相同的指针。
关于QueryInterface() 的实现规则:
1、QueryInterface 返回的总是同一 IUnkown指针。
组件的实例只有一个IUnkown 接口。
2、若客户曾经获取过某个接口,那么它将总能获取此接口。
这条规则选用于组件的某个特定实例,当创建组件的一个新实例时,此规则不适用。
3、客户可以再次获取已经拥有的接口。
为什么要再次获取已经拥有的接口?所有的接口都继承了 IUnkown ,而许多函数都需要一个 IUnkown 指针作为参数。它们应该能够使用任何 IUnkown 指针来获取任何接口。
4、客户可以返回到起始接口。
若客户拥有一个IX接口指针并成功地使用它来查询一个IY接口,那么它可以使用此IY接口来查询一个IX接口。
5、若能从某个接口获取某特定接口,那么可以从任意接口都将可以获取此接口。
若可以通过IX=>IY,IY=>IZ,那么 IX=>IZ。
QueryInterface 定义了组件,是COM最为重要的部分。组件所支持的接口是 QueryInterface 能够为之返回指针的那些接口。这是由QueryInterface 的实现决定。
何时要建立一个新版本?当下面条件中的任何一个改变时,就应该给接口指定新的ID:
1、接口中函数的数目。
2、接口中函数的顺序。
3、某个函数的参数。
4、某个函数的参数顺序。
5、某个函数的参数类型。
6、函数可能的返回值。
7、函数返回值的类型。
8、函数参数的含义。
9、接口中函数的含义。
- (一二三)
- 一二三
- 一二三
- 一二三
- 一二三
- 一二三
- 一二三
- 一二三
- 一二三
- debug经验一二三
- Static 一二三
- debug经验一二三
- Enough用法一二三
- 数据库邮件一二三
- Analysis Services一二三
- 全文索引一二三
- 南邮一二三
- 老子一二三
- JDBC 高级数据类型的应用
- 用JSF+Spring+IBatis搭建一个简单的框架
- js判断上传图片大小
- 动态生成多级菜单
- 不同主机同一用户之间SSH信任关系的建立
- (一二三)
- 丁香花 吉他简谱
- 配置BEA WebLogic 8.1 JDBC连接
- 对bean进行某个字符字段排序
- jsp程序设计(二)-jsp基本语法(11)- jsp:useBean
- javaSmart之upload组件使用及源码
- svn 常用命令
- 从诺顿误杀联想到XP操作系统的后门——“误猜”MS窃取我国家机密?(转贴)
- 设计模式之Adapter(1)