关于COM对象创建(CoCreateInstance,与QueryInterface)

本文深入探讨了COM组件中如何利用CoCreateInstance函数创建对象,并详细阐述了QueryInterface方法在对象间接口查询的角色。通过实例解析,揭示了COM对象交互的关键步骤及其在实际开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

panda 2002-12-19 05:40 PM

一个土问题,关于COM对象的创建
 
因为生活所迫,这几天必须对COM有所了解。今天看了之后,对COM对象的创建有所困惑。
使用CoCreateInstance和QueryInterface两种方法创建COM对象有何不同?例子程序如下:
代码:

//Create a COM object from the Shell Link coclass
hr = CoCreateInstance ( CLSID_ShellLink,
                                        NULL,
                                        CLSCTX_INPROC_SERVER,
                                        IID_IShellLink,
                                        (void**) &pISL );

// Get an IPersisteFile interface from the COM object.
hr = pISL->QueryInterface ( IID_IPersistFile, (void**) &pIPF );

这两种方法有什么去区别?还是我的理解上有问题?原文中有这么一句:If it succeeded, you can then use the new interface pointer, pIPF, just like any other interface!那么按我的理解就是QueryInterface也创建了一个新的COM对象。
请大家指教,谢了!

panda 2002-12-19 06:10 PM

我看了IPersisteFile借口,继承关系如下:IPersisteFile->IPersist->IUnknown,他和pISL所指的IShellLink*有什么关系?必须通过调用pISL的QueryInterface方法创建?

pol
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值