Использование интерфейсов IADs
ADSI, каждый элемент службы каталогов представлен объектом ADSI, который является объектом Component Object Model (COM), поддерживающим стандартный интерфейс COM IUnknown, а также интерфейсы IDispatch и IADs. Идентификаторы IAD предоставляют базовые функции обслуживания для объектов ADSI.
Каждый объект ADSI должен поддерживать этот интерфейс, который служит для:
- Укажите идентификацию объектов по имени, классу или ADsPath.
- Определите контейнер объектов, который управляет созданием и удалением объектов.
- Получите определение схемы объекта.
- Загрузите атрибуты объекта в кэш свойств и зафиксируйте изменения в хранилище постоянных каталогов.
- Доступ и изменение значений атрибутов объекта в кэше свойств.
Интерфейс IADs предназначен для обеспечения того, чтобы объекты ADSI предоставляли сетевым администраторам и поставщикам служб каталогов эффективное и согласованное представление различных базовых служб каталогов.
На предыдущем рисунке показан универсальный объект ADSI, поддерживающий базовые интерфейсы IAD, IADsPropertyList, IUnknown, IDirectoryObject и IDispatch. Объект ADSI, такой как это, управляет данными из хранилища данных базовой службы каталогов через поддерживаемые интерфейсы. Эти данные называются свойствами объекта, а подпрограммы, которые получают и задают эти свойства, называются методами свойств. Свойства только для чтения имеют один метод свойства, который получает значение свойства. Свойства чтения и записи имеют два метода; Метод, который задает значение и тот, который получает значение. Свойства реализуются для каждого объекта ADSI с помощью кэша свойств. IADs::get_ADsPath и IADs::p ut_ADsPath являются примерами методов свойств. Методы свойств не являются очевидными для Visual Basic и других клиентов службы автоматизации, которые обеспечивают прямые ссылки на свойство. Например, Visual Basic ссылается на идентификаторы IADs::ADsPath непосредственно с помощью синтаксиса Object.ADsPath . Дополнительные сведения см. в разделе "Методы свойства интерфейса".
Кроме того, объект ADSI взаимодействует с другими объектами ADSI и напрямую к пространству имен с помощью методов. Методы выполняются немедленно. Примеры методов включают IADs::SetInfo и IADs::GetInfo.
Свойства, методы свойств и методы доступны через стандартные COM-интерфейсы.
Объект ADSI однозначно определяется его ADsPath. Например, ADsPath для пространства имен LDAP — "LDAP://MyServer/DC=Fabrikam,DC=COM". Дополнительные сведения об ADsPaths см. в статье ADSI Binding. Для программистов, знакомых с моникерами COM, это концептуально похоже на отображаемое имя COM.
Любой объект ADSI, содержащий другие объекты ADSI, называемый объектом контейнера ADSI, также поддерживает интерфейс IADsContainer , который предоставляет методы и свойства, управляющие созданием, удалением и перечислением объектов ADSI, содержащихся в объекте. На следующем рисунке показан объект контейнера ADSI.
Большинство объектов ADSI содержатся другими объектами. Единственным объектом ADSI без родительского контейнера является объект пространств имен ADI верхнего уровня ("ADS:").
Метод IADs::SetInfo в объекте контейнера постоянно сохраняет кэшированные свойства объекта контейнера ADSI в хранилище в дополнение к любым объектам, созданным с помощью метода IADsContainer::Create. IADsContainer::D elete не влияет на кэш свойств, но удаляет базовый элемент каталога пространства имен, представленный этим объектом.