Выбор интерфейса для привязки
При привязке объекта каталога вызывающий объект указывает нужный тип интерфейса ADSI. Все объекты каталога ADSI поддерживают интерфейс IADs. Объект ADSI также может поддерживать другие интерфейсы. Фактические интерфейсы, поддерживаемые объектом, зависят от класса объекта. Например, объект пользователя поддерживает интерфейс IADsUser, но не будет поддерживать интерфейс IADsComputer.
Клиенты службы автоматизации должны использовать интерфейсы IAD* , так как эти интерфейсы представляют собой двойные интерфейсы, обеспечивающие больший уровень абстракции и предоставляющие данные с помощью типа данных VARIANT .
Помимо интерфейсов IADS* клиенты C/C++ могут использовать интерфейсы IDirectoryObject и IDirectorySearch. Эти интерфейсы не являются двойными интерфейсами и не поддерживают автоматизацию. Эти интерфейсы обеспечивают более широкий контроль над тем, какие атрибуты следует извлекать и разрешать доступ к необработанным данным, хранящимся в свойстве. Например, если метод IADs::Get используется для получения атрибута ntSecurityDescriptor для объекта, метод IADs::Get предоставляет указатель интерфейса IDispatch, поддерживающий интерфейс IADsSecurityDescriptor. Интерфейс IADsSecurityDescriptor предоставляется ADSI для представления дескриптора безопасности. Для сравнения, если метод IDirectoryObject::GetObjectAttributes используется для извлечения атрибута ntSecurityDescriptor, IDirectoryObject::GetObjectAttributes предоставляет массив байтов, которые можно привести к структуре SECURITY_DESCRIPTOR. API безопасности Win32 можно использовать с этими данными для управления дескриптором безопасности.