记录COM编程的点点滴滴

Coclass:组件对象类。 

GUID:全球唯一标识符,globally unique identifer,是个128位的数字。每一个接口和coclass有一个GUID.因为每一个GUID都是全球唯一的,所以避免了名字冲突。

类ID或者CLSID是命名coclass的GUID,接口ID或者IID是命名接口的GUID 。


基本接口——IUnknown

每一个COM接口都派生于IUnknown。这个名字有点误导人,其中没有未知(Unknown)接口的意思。它的原意是如果有一个指向某COM对象的IUnknown指针,就不用知道潜在的对象是什么,因为每个COM对象都实现IUnknown。

IUnknown 有三个方法:

AddRef() —— 通知COM对象增加它的引用计数。如果你进行了一次接口指针的拷贝,就必须调用一次这个方法,并且原始的值和拷贝的值两者都要用到。在本文的例子中没有用到AddRef()方法;

Release() —— 通知COM对象减少它的引用计数。参见前面的Release()示例代码段;

QueryInterface() —— 从COM对象请求一个接口指针。当coclass实现一个以上的接口时,就要用到这个方法。 

原文地址:https://www.cnblogs.com/alwaysyouare/p/1892153.html