Поделиться через


Как ADSI интегрирует расширения

В следующих рекомендациях описывается взаимодействие ADSI с расширениями:

  • Что-то привязывается к объекту каталога ADSI. Например, "LDAP://CN=JeffSmith,OU=Sales,DC=Fabrikam,DC=COM".
  • ADSI определяет, что объект находится в пользовательском классе.
  • ADSI выполняет поиск в реестре и определяет clSID расширения для пользователя. Помните, что ADSI кэширует эти данные.
  • Что-то вызывает метод QueryInterface для IID_IMyExtension. ADSI ищет интерфейсы, связанные с пользовательским объектом, начиная с собственных интерфейсов, а затем просматривая интерфейсы расширения.
  • Если совпадение найдено, ADSI создает экземпляр компонента, который поддерживает IID_IMyExtension, и вызывает QueryInterface для расширения. Возвращается полученный интерфейс.
  • Пользователь использует этот интерфейс для вызова методов интерфейса.
  • Затем клиент вызывает QueryInterface для IID_IYourExtension, который находится в другом компоненте. Этот компонент делегирует вызов QueryInterface интерфейсу IUnknown агрегатора, который сам по себе является ADSI.
  • Опять же, ADSI выполняет поиск интерфейсов и создает экземпляр компонента.