COM编程入门 :什么是COM,如何使用COM
2006-07-21 11:45:08 来源:WEB开发网继续用上面的例子来说明如何使用Release():
// 像上面一样创建COM 对象, 然后,
if ( SUCCEEDED ( hr ) )
{
// 用pISL调用方法
// 通知COM 对象不再使用它
pISL->Release();
}
接下来将详细讨论IUnknown接口。
基本接口——IUnknown
每一个COM接口都派生于IUnknown。这个名字有点误导人,其中没有未知(Unknown)接口的意思。它的原意是如果有一个指向某COM对象的IUnknown指针,就不用知道潜在的对象是什么,因为每个COM对象都实现IUnknown。
IUnknown 有三个方法:
AddRef() – 通知COM对象增加它的引用计数。如果你进行了一次接口指针的拷贝,就必须调用一次这个方法,并且原始的值和拷贝的值两者都要用到。在本文的例子中没有用到AddRef()方法。
Release() – 通知COM对象减少它的引用计数。参见前面的Release()示例代码段。
QueryInterface() – 从COM对象请求一个接口指针。当coclass实现一个以上的接口时,就要用到这个方法。
前面已经看到了Release()的使用,但如何使用QueryInterface()呢?当你用CoCreateInstance()创建对象的时候,你得到一个返回的接口指针。如果这个COM对象实现一个以上的接口(不包括IUnknown),你就必须用QueryInterface()方法来获得任何你需要的附加的接口指针。QueryInterface()的原型如下:
HRESULT IUnknown::QueryInterface (
REFIID iid,
void** ppv );
以下是参数解释:
iid
所请求的接口的IID。
ppv
接口指针的地址,QueryInterface()通过这个参数在成功时返回这个接口。
更多精彩
赞助商链接