Понятия не имею, почему кто-то отклонил этот вопрос. Мне кажется, это совершенно правильный вопрос; может, они просто еще не пили кофе сегодня утром.
Похоже, вы спрашиваете, что GUID, IUnknown и IDispatch имеют отношение к COM. Я постараюсь дать краткий обзор.
Каждый компонент COM предоставляет общий интерфейс IUnknown. IUnknown имеет методы AddRef (), Release () и QueryInterface (). AddRef () и Release () используются для поддержки подсчета ссылок, так что когда каждая ссылка на объект будет освобождена, объект будет уничтожен. QueryInterface () отчасти напоминает COM-версию оператора dynamic_cast <> в C ++. Он используется клиентским кодом, чтобы увидеть, указывает ли указатель IUnknow, который у них есть, на объект другого типа, например, IDog, ICat или любой другой.
Таким образом, каждый COM-компонент должен реализовывать IUnknown, но большинство COM-библиотек реализуют это автоматически, поэтому при написании COM-кода вам обычно не нужно писать какой-либо код, чтобы получить IUnknown; Вы получаете это бесплатно.
GUID - это как отпечатки пальцев. Как в реальной жизни два человека могут иметь одно и то же имя, так и в COM два COM-компонента также могут иметь одинаковое имя. Например, вы можете иметь 2 библиотеки, которые реализуют интерфейс IDog, но они могут делать совершенно разные вещи. Тем не менее, вы должны иметь возможность установить обе библиотеки на своем компьютере, и различие между ними заключается в том, для чего используются GUID. GUID - это глобально уникальный идентификатор, означающий, что когда вы его генерируете, теоретически ни один другой человек на Земле в любой другой момент времени не сможет создать такой же GUID. Таким образом, в дополнение к имени каждый COM-объект (и coclass, и библиотека, и т. Д.) Имеет GUID.
IDispatch - это еще один базовый интерфейс, очень похожий на IUnknown, но в отличие от IUnknown, который требуется для каждого COM-объекта, IDispatch является необязательным и предоставляет специальные функции, которые поддерживаются многими, но не всеми COM-объектами. Такие вещи, как поддержка функций языка Certian и облегчение использования вашего объекта клиентами. Большинство (вероятно) COM-объектов предоставляют этот интерфейс.
Что касается библиотек COM; да, они должны быть зарегистрированы в Windows.