|
CoGetClassObject
CoCreateInstance實際上并沒有直接創(chuàng)建COM組件 ,而是創(chuàng)建了一個被稱作是類廠的組件。而所需的組件正是由些類廠創(chuàng)建的。類廠組件的唯一功能就創(chuàng)建其他的組件。創(chuàng)建組件的標(biāo)準(zhǔn)接口是IClassFactory,用CoCreateInstnce創(chuàng)建的組件實際上是通過IClassFactory創(chuàng)建的。
類廠只是創(chuàng)建其它組件的一個簡單組件。
區(qū)別1:CoGetClassObject同CoCreatInstance是非常相似的。只一個參數(shù)不同,CoCreatInstance將接收一個Iunknown指針,而CoGetClassObject則將接收一個COSERVERINFO指針。
區(qū)別2:CoGetClassObject返回的是指向類廠中某個接口的指針(客戶可以用這個指針來創(chuàng)建所需的組件),而CoCreateInstance返回的則是指向組件中某個接口的指針。
為了創(chuàng)建同某個CLSID相應(yīng)的類廠,需要一個與CoCreateInstance等價的,也可以接收一個CLSID作為參數(shù)并返回相應(yīng)類廠中某個接口指針的函數(shù)。這個函數(shù)就是COM庫中的CoGetClassObject。
類廠所支持的用于創(chuàng)建組件的標(biāo)準(zhǔn)接口是IClassFactory。大多數(shù)組件均可使用IClassFactory接口來創(chuàng)建。
CoGetClassObject聲明:
STDAPI CoGetClassObject(REFCLSID rclsid,
DWORD dwClsContext,
COSERVERINFO * pServerInfo,
REFIID riid,
LPVOID * ppv); |
|
|