COM IUnknown и нужен ли указатель на него перед вызовом CoGetClassObject?

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

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

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

1 ответ

Решение

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

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

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

Другие вопросы по тегам