【问题标题】:COM IUnknown and do I need a pointer to it first before calling CoGetClassObject?COM IUnknown,在调用 CoGetClassObject 之前我是否需要一个指向它的指针?
【发布时间】:2011-02-20 01:58:45
【问题描述】:

在 COM 中,当你想创建某个 COM Server 对象的实例时,是否首先需要获取指向它的 IUnknown 接口的指针,然后才能使用 CoGetClassObject 创建一个类对象?

据我了解,IUnknown 是用来管理对象生命周期的,所以据我了解,无论客户端想要创建什么对象,首先需要一个指向它的 IUnknown 接口实现的指针。

听起来正确吗?如果没有,谁能告诉我它是如何工作的?

【问题讨论】:

    标签: object com iunknown


    【解决方案1】:

    IUnknown 管理现有 COM 对象的生命周期。在对象创建之前,没有IUnknown指针可言。

    CoGetClassObject 用于获取预期创建感兴趣对象的对象的IUnknown 接口。即,它是一个对象factory,通常实现IClassFactory,它声明了用于创建对象的CreateInstance方法。

    与其显式使用类工厂,不如直接调用CoCreateInstance 更简单。

    【讨论】:

    • 那么只有实现了 IUnknown 的对象才能被客户端在 COM 中使用?
    • Tony:所有对象都必须实现IUnknown。该接口本身并不是很有用,但它声明了QueryInterface 方法,可以让您发现对象支持的其他接口。
    • IUnknown 本身就很有用,因为它有助于跟踪对象的生命周期。
    • @sharptooth:我没有说它本身没有用。
    猜你喜欢
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 2012-07-17
    • 2021-09-27
    相关资源
    最近更新 更多