В чем разница между CoCreateInstance и CoGetClassObject?
От: _Lestat_ Россия  
Дата: 23.06.04 07:06
Оценка:
В чем разница между 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?
От: TK Лес кывт.рф
Дата: 23.06.04 07:18
Оценка:
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?
От: Vi2 Удмуртия http://www.adem.ru
Дата: 23.06.04 07:47
Оценка:
Здравствуйте, _Lestat_, Вы писали:

_L_>В чем разница между COM Library функциями: CoCreateInstance и CoGetClassObject?


В том, что они возвращают (в общем случае) совершенно разные СОМ объекты: непосредственно некий объект или объект-построитель (объект фабрики класса) таких неких объектов.

CoCreateInstance — это обертка над CoGetClassObject и за сценой использует одноразово именно такой объект-построитель, полученный через CoGetClassObject.

_L_>Я и в первом и во втором случае могу получить указатель на IClassFactory и создавать объекты дальше.


В том-то и дело, что объекты фабрики класса через CoCreateInstance не создаются (в общем случае). Т.е. CoCreateInstance( CLSID_XXXX, ..., IID_IClassFactory, (void**) &pObj ) вернет код ошибки E_NOINTERFACE.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.