《COM 原理与应用》学习笔记 - 第一部分 COM原理

豆豆网   技术应用频道   2007年03月20日  【字号: 收藏本文

本文详细介绍《COM 原理与应用》学习笔记 - 第一部分 COM原理

接口指针 ----> pVtable ----> 指针函数1 -> |----------|
m_Data1 指针函数2 -> | 对象实现 |
m_Data2 指针函数3 -> |----------|

  每一个接口成员函数的第一个参数为指向对象实例的指针(=this),这是因为接口本身并不独立使用,它必须存在于某个 COM 对象上,因此该指针可以提供对象实例的属性信息,在被调用时,接口可以知道是对哪个 COM 对象在进行操作。

  在接口成员函数中,字符串变量必须用 Unicode 字符指针,COM 规范要求使用 Unicode 字符,而且 COM 库中提供的 COM API 函数也使用 Unicode 字符。所以如果在组件程序内部使用到了 ANSI 字符的话,则应该进行两种字符表达的转换。当然,在即建立组件程序又建立客户程序的情况下,可以使用自己定义的参数类型,只要它们与 COM 所能识别的参数类型兼容。

  Visual C++ 提供两种字符串的转换:

namespace _com_util {
BSTR ConvertStringToBSTR(const char *pSrc) throw(_com_error);
BSTR ConvertBSTRToString(BSTR pSrc) throw(_com_error);
}

  BSTR 是双字节宽度字符串,它是最常用的自动化数据类型。

  ---------------------------------------------------

  接口描述语言 IDL

  ---------------------------------------------------

  COM 规范在采用 OSF 的 DCE 规范描述远程调用接口 IDL (interface description language,接口描述语言)的基础上,进行扩展形成了 COM 接口的描述语言。接口描述语言提供了一种不依赖于任何语言的接口的描述方法,因此,它可以成为组件程序和客户程序之间的共同语言。

  COM 规范使用的 IDL 接口描述语言不仅可用于定义 COM 接口,同时还定义了一些常用的数据类型,也可以描述自定义的数据结构,对于接口成员函数,我们可以定义每个参数的类型、输入输出特性,甚至支持可变长度的数组的描述。IDL 支持指针类型,与 C/C++ 很类似。例如:

责编:豆豆技术应用

正在加载评论...