Предоставление сведений о классе

Часто полезно для клиента объекта для проверки сведений о типе объекта. Учитывая CLSID объекта, клиент может найти библиотеку типов объекта с помощью записей реестра, а затем проверить библиотеку типов для записи сокласса в библиотеке, соответствующей CLSID.

Однако не все объекты имеют CLSID, хотя они по-прежнему должны предоставлять сведения о типе. Кроме того, клиенту удобно просто запрашивать объект для получения сведений о типе, а не для извлечения одной и той же информации из записей реестра. Эта возможность важна при работе с исходящими интерфейсами в подключенных объектах. (См. раздел Использование IProvideClassInfo для получения дополнительных сведений о том, как соединительные объекты предоставляют эту возможность.)

В таких случаях клиент может запрашивать объект для IProvideClassInfo или IProvideClassInfo2. Если эти интерфейсы существуют, клиент вызывает метод GetClassInfo , чтобы получить сведения о типе для интерфейса.

Реализуя IProvideClassInfo или IProvideClassInfo2, объект указывает, что он может предоставлять сведения о типе для всего класса, то есть то, что он будет описывать в разделе соклассов библиотеки типов, если он имеет один. GetClassInfo возвращает указатель ITypeInfo, соответствующий данным сокласса объекта. С помощью этого указателя ITypeInfo клиент может проверить все определения входящих и исходящих интерфейсов объекта.

Объект также может предоставить IProvideClassInfo2. Интерфейс IProvideClassInfo2 — это простое расширение для IProvideClassInfo , которое упрощает получение идентификаторов исходящего интерфейса объекта для набора событий по умолчанию. IProvideClassInfo2 является производным от IProvideClassInfo.

COM-клиенты и серверы