使用CoGetClassObject而不使用CoCreateInstance的情况

 大多数情况下,组件的创建均使用CoCreateInstance而不是用CoGetClassObject,但是在如下两种情况下应使用CoGetClassObject而不应该使用CoCreateInstance。

IClassFactory 接口的CreateInstance
IClassFactory2 接口的CreateInstance2

CoCreateInstance
{
CoGetClassObject
CreateInstance
}
第一种情况:  由于类厂是通过IClassFactory接口来创建Com对象的,CoCreateInstance的内部封装的是用IClassFactory接口(CreateInstance)来创建Com对象,如果想用不同于IClassFactory接口(如果用IClassFactory2)来创建组件则此时应该使用CoGetClassObject例如
CoGetClassObject
CreateInstance2

第二种情况: 
若需要同时创建同一个Com对象的多个实例则应该使用CoGetClassObject,因为CoCreateInstance创建了Com对象之后类厂的指针就Release了所以CoCreateInstance只能创建一个Com对象。

你可能感兴趣的:(Windows)