在最低级别上,COM 实际上只是一个二进制级别的标准,用于描述两个软件如何进行通信。它是二进制的,因为它100% 与语言无关,它不依赖于源代码,而仅依赖于内存中结构的特定布局。
在我看来,最好的入门文章是The COM Programmer's Cookbook。这个著名的二进制标准在我在这里引用的文档的开头进行了解释:
服务用户和实现之间的分离是通过间接函数调用来完成的。COM 接口只不过是一个命名的函数指针(方法)表,每个函数指针都有记录的行为。该行为根据接口函数的参数和对象实例内的状态模型来记录。实例中模型的描述不会超出使接口中其他方法的行为易于理解所需的内容。函数表称为 vtable。
接口实际上是指向 vtable 的指针。vtable 通常由多个实例共享,因此方法需要不同的指针才能找到接口所附加的对象。这是接口指针,虚函数表指针是接口客户端唯一可以访问的东西。根据设计,这种安排与 C++ 类的虚拟方法调用约定相匹配,因此 COM 接口与 C++ 抽象类是二进制兼容的。
它附带的模式表示内存中的二进制标准布局:

| 归档时间: |
|
| 查看次数: |
2115 次 |
| 最近记录: |