Предоставление сведений о классе
Часто полезно для клиента объекта изучать информацию о типе объекта. Учитывая CLSID объекта, клиент может найти библиотеку типов объекта с помощью записей реестра, а затем проверить библиотеку типов для записи сокласса в библиотеке, соответствующей CLSID.
Однако не все объекты имеют CLSID, хотя они по-прежнему должны предоставлять сведения о типе. Кроме того, для клиента удобно иметь возможность просто запросить у объекта информацию о его типе, вместо того чтобы заниматься утомительным извлечением этой же информации из записей реестра. Эта возможность важна при работе с исходящими интерфейсами в подключенных объектах. (Дополнительные сведения о том, как соединительные объекты предоставляют эту возможность, см. в разделе Using IProvideClassInfo.)
В этих случаях клиент может запрашивать объект для IProvideClassInfo или IProvideClassInfo2. Если эти интерфейсы существуют, клиент вызывает метод GetClassInfo, чтобы получить сведения о типе интерфейса.
Реализуя IProvideClassInfo или IProvideClassInfo2, объект указывает, что он может предоставлять сведения о типе для всего класса; т. е. то, что он будет описывать в разделе сокласса своей библиотеки типов, если он имеет один. GetClassInfo возвращает указатель ITypeInfo, соответствующий данным сокласса объекта. С помощью этого указателя ITypeInfo клиент может проверить все определения входящих и исходящих интерфейсов объекта.
Объект также может предоставлять IProvideClassInfo2. Интерфейс IProvideClassInfo2 — это простое расширение для IProvideClassInfo, которое упрощает процесс получения идентификаторов исходящих интерфейсов объекта для его набора событий по умолчанию. IProvideClassInfo2 является производным от IProvideClassInfo.
Связанные разделы