COM IUnknown и нужен ли указатель на него перед вызовом CoGetClassObject? - PullRequest
1 голос
/ 16 мая 2010

В COM, если вы хотите создать экземпляр какого-либо объекта COM-сервера, вам сначала нужно получить указатель на его интерфейс IUnknown и только затем создать объект класса с помощью CoGetClassObject?

Насколько я понимаю, IUnknown используется для управления временем жизни объекта, поэтому, насколько я понимаю, независимо от того, какой объект хочет создать клиент, сначала нужно указать указатель на его реализацию интерфейса IUnknown.

Звук правильный? Если нет, может кто-нибудь сказать мне, как это работает?

1 Ответ

3 голосов
/ 16 мая 2010

IUnknown управляет сроком службы существующего COM-объекта . До создания объекта нет указателя IUnknown, о котором можно было бы говорить.

CoGetClassObject используется для получения интерфейса IUnknown для объекта, который, как ожидается, будет создавать интересующие объекты. То есть это объект factory , обычно реализующий IClassFactory, который объявляет метод CreateInstance, который вы используете для создания объектов.

Вместо явного использования фабрик классов часто проще просто вызвать CoCreateInstance.

...