使用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对象
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对象