CoGetClassObject
CoCreateInstance实际上并没有直接创建COM组件 ,而是创建了一个被称作是类厂的组件。而所需的组件正是由些类厂创建的。类厂组件的唯一功能就创建其他的组件。创建组件的标准接口是IClassFactory,用CoCreateInstnce创建的组件实际上是通过IClassFactory创建的。
类厂只是创建其它组件的一个简单组件。
区别1:CoGetClassObject同CoCreatInstance是非常相似的。只一个参数不同,CoCreatInstance将接收一个Iunknown指针,而CoGetClassObject则将接收一个COSERVERINFO指针。
为了创建同某个CLSID相应的类厂,需要一个与CoCreateInstance等价的,也可以接收一个CLSID作为参数并返回相应类厂中某个接口指针的函数。这个函数就是COM库中的CoGetClassObject。
类厂所支持的用于创建组件的标准接口是IClassFactory。大多数组件均可使用IClassFactory接口来创建。
CoGetClassObject声明:
STDAPI CoGetClassObject(REFCLSID rclsid,
DWORD dwClsContext,
COSERVERINFO * pServerInfo,
REFIID riid,
LPVOID * ppv); |
|
来自: semo_zhang > 《com组件》