核心实现

ADSI 提供程序支持以下功能:

  • COM 和 URL 格式的 ADsPath 字符串。 根据定义,可以使用 ADsPath 检索 Active Directory 对象。 提供程序支持其目录服务使用 ParseDisplayName 实现所需的语法。
  • 支持 IParseDisplayName::P arseDisplayNameIADsOpenDSObject 的顶级命名空间对象。 此对象包含此命名空间的根节点。 ParseDisplayName 实现的一部分必须包含一个分析程序,用于检查其自己的命名空间的语法错误。 此对象还必须支持 IADsIADsOpenDSObject
  • IADs 接口。 这包括通过 IADs::GetInfoIADs::SetInfo 实现的简单属性缓存实现。 获取或设置对象属性的操作在缓存模式下发生。 缓存值在 IADs::SetInfo 期间写入基础目录存储。 但是,不会缓存 ADSI 方法,而是立即执行。
  • 用于直接访问和枚举属性缓存中的属性的 IADsPropertyListIADsPropertyEntryIADsPropertyValue 接口。 对于不公开架构的目录服务,此接口允许你操作对象的属性。
  • 非自动化客户端的 IDirectoryObject 接口。 这使用无线协议实现最佳性能,并绕过属性缓存。
  • IADsContainer 接口。 每个 Active Directory 对象都有一个父容器,用于控制其生存期。 请注意,对于 ADs 容器对象, IADs::GetInfo 仅影响容器属性,而不会影响其内容。 ADs 容器对象的 SetInfo 仅影响容器属性,不会影响容器中已存在的新创建的对象或对象。
  • IDispatch 接口。 这是不使用编译时绑定的语言(如 Visual Basic Scripting Edition)的自动化界面。 与此相关的是提供程序必须提供的类型库数据。 有关详细信息,请参阅 ADSI 提供程序的实现问题
  • 架构类容器对象以及支持 IADsSyntaxIADsPropertyIADsClass 的相应语法、属性和架构类对象。 至少,每个根节点必须包含自己的架构类容器对象。
  • 如果任何受支持的属性都是 ADSI 对象的集合(例如安全组), 则 IADsMembers 接口。
  • 如果任何受支持的属性是具有 IADsCollection::Add 和 IADsCollection::Remove 功能的同一目录元素类型的集合,则为 IADsCollection 接口。
  • IEnumXXXX 枚举支持所有特定的枚举器对象。
  • 用于映射语法并将本机数据转换为 VARIANT 数据类型的例程。
  • 遵循提供程序提供的 ADSI 对象的 ADSI 约定。 包括记录接口属性和方法的帮助文件和类型库。

与任何 COM 实现一样,对 QueryInterface 的调用必须返回对未实现接口 的E_NOINTERFACEE_NOTIMPL 未实现的接口方法,并为未实现的属性返回 E_ADS_PROPERTY_NOT_SUPPORTED 。 有关双接口及其影响属性实现方式的详细信息,请参阅 双接口