В чем разница между COM Library функциями: CoCreateInstance и CoGetClassObject? Обе они возвращают указатель на интерфейс. Но MSDN говорит, что первую нужно использовать для создания "a single uninitialized object of the class", а вторую, когда "you want to create multiple objects through a class object". Ну дык разница в чем? Я и в первом и во втором случае могу получить указатель на IClassFactory и создавать объекты дальше.
Backup not found: (A)bort (R)etry (P)anic
Re: В чем разница между CoCreateInstance и CoGetClassObject?
Hello, "_Lestat_" > В чем разница между COM Library функциями: CoCreateInstance и CoGetClassObject? Обе они возвращают указатель на интерфейс. Но MSDN говорит, что первую нужно использовать для создания "a single uninitialized object of the class", а вторую, когда "you want to create multiple objects through a class object". Ну дык разница в чем? Я и в первом и во втором случае могу получить указатель на IClassFactory и создавать объекты дальше.
Не совсем. CoCreateInstance возвращает уже созданный экземпляр класса и запросить у него IClassFactory скорее всего не получится. CoGetClassObject используется для получения указателя на фабрику класса и запросить у этого объекта интерфейс на класс скорее всего не получится...
Posted via RSDN NNTP Server 1.9 alpha
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: В чем разница между CoCreateInstance и CoGetClassObject?
Здравствуйте, _Lestat_, Вы писали:
_L_>В чем разница между COM Library функциями: CoCreateInstance и CoGetClassObject?
В том, что они возвращают (в общем случае) совершенно разные СОМ объекты: непосредственно некий объект или объект-построитель (объект фабрики класса) таких неких объектов.
CoCreateInstance — это обертка над CoGetClassObject и за сценой использует одноразово именно такой объект-построитель, полученный через CoGetClassObject.
_L_>Я и в первом и во втором случае могу получить указатель на IClassFactory и создавать объекты дальше.
В том-то и дело, что объекты фабрики класса через CoCreateInstance не создаются (в общем случае). Т.е. CoCreateInstance( CLSID_XXXX, ..., IID_IClassFactory, (void**) &pObj ) вернет код ошибки E_NOINTERFACE.