我知道 CoCreateInstance 为给定的类 ID 找到 COM 服务器,为该 ID 创建对象实例并从该对象实例检索接口(interface)。 CoGetClassObject() 找到类 ID 的 COM 服务器,为该类 ID 创建类工厂的实例并检索该类工厂接口(interface),然后可用于创建实际对象。
当用于在同一台机器上创建对象时,这些函数还有何不同?它们的工作方式是否相同,但只会导致在完全相同的 COM 服务器中调用不同的代码?
最佳答案
CoGetClassObject 实际上返回一个指向特定接口(interface)工厂的指针。在底层,CoCreateInstance 使用 CoGetClassObject。调用 CoGetClassObject 的优点是,如果要创建特定对象的多个实例,它允许您只需创建一次类工厂。
CoGetClassObject 的 MSDN 部分简要讨论了如何利用此功能。
关于windows - 在同一台机器上创建对象时 CoCreateInstance() 和 CoGetClassObject() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/824907/