表1 IADs接口的属性

属性名
类型
说明

Name
BSTR
对象名字

AdsPath
BSTR
对象的全路径

Class
BSTR
对象的类别(表结构对象的路径)

GUID
BSTR
对象的全局唯一标识(GUID)

Parent
BSTR
父包容器的路径

Schema
BSTR
表结构对象的路径

表2 IADs接口的方法

方法名
参数
说明

GetInfo

用属性值重新装入对象

SetInfo

提交属性值的变化

Get
BSTR bstrName,

VARIANT *pvProp
获取指定名字的属性值

Put
BSTR bstrName,

VARIANT vProp
设置指定名字的属性值

GetEx
BSTR bstrName,

VARIANT *pvProp
获取指定名字的单值或多值属性值

PutEx
LONG lnControlCode,

BSTR bstrName,

VARIANT vProp
设置指定名字的单值或多值属性值;若lnControlCode为ADS_PROPERTY_CLEAR,可以删除属性

GetInfoEx
VARIANT vProps,

LONG lReserved
与GetInfo类似,优化处理

另一个重要的接口是IADsContainer,它是所有包容器对象必须要实现的接口。IADsContainer接口的属性和方法如表3和表4所示。

表3 IADsContainer接口的属性

属性名
类型
说明

Count
long
包容器中对象的个数

_NewEnum
LPUNKNOWN
返回包容器中对象的枚举器

Filter
VARIANT
BSTR数组,每个BSTR指定了过滤器的定义

Hints
VARIANT
属性数组,其用法与GetInfoEx类似

表4 IADsContainer接口的方法

方法名
参数
说明

GetObject
BSTR bstrClass,

BSTR bstrRelativeName,

LPDISPATCH *pNewObject
得到包容器对象中指定对象的IDispatch接口指针

Create
BSTR bstrClass,

BSTR bstrRelativeName,

LPDISPATCH *pNewObject
在包容器对象中创建指定名字的目录对象,并返回对象的IDispatch接口指针

Delete
BSTR bstrClass,

BSTR bstrRelativeName
删除包容器对象中指定的目录对象

CopyHere
BSTR bstrSource,

BSTR bstrNewName,

LPDISPATCH* pNewObject
拷贝目录对象到当前包容器对象中

MoveHere
BSTR bstrSource,

BSTR bstrNewName,

LPDISPATCH* pNewObject 
移动目录对象到当前包容器对象中

IADs和IADsContainer接口分别代表了目录服务中的目录对象和包容器对象,为了对一个名字空间进行各种目录操作,我们必须从最基本的根出发,ADSI为我们提供了接口IADsNamespaces用以表达名字空间对象。IADsNamespaces接口比较简单,它只有一个属性“DefaultContainer”,此属性指定了客户程序访问的基本包容器对象的路径。

仅仅一个IADs接口还难以表达一个目录对象的全部特征,前面已经提到,ADSI用类别来定义目录对象的特征,并且类别对象本身也是目录对象,它除了实现IADs接口外,还实现了IADsClass接口。IADsClass接口从IADs派生,其属性如表5所示。

表5 IADsClass接口的属性

属性名
类型
说明

PrimaryInterface
BSTR
可直接访问到此类别属性的接口ID

CLSID
BSTR
与之相连的COM对象的CLSID

OID
BSTR
定义此类别的对象标识符

Abstract
VARIANT_BOOL
指示此类别是否为抽象类,若是的话,则它不能被实例化,但其它类可以继承该类别

Auxiliary
VARIANT_BOOL
指示此类别是否为辅助类

MandatoryProperties
VARIANT
与之相连的目录对象必须支持的属性名数组

OptionalProperties
VARIANT
与之相连的目录对象支持的可选属性名数组

NamingProperties
VARIANT
与之相连的目录对象支持的命名属性名数组(用于指示相对标识名RDN)

DerivedFrom
VARIANT
此类所继承的类的路径数组

AuxDerivedFrom
VARIANT
此类所继承的辅助类的路径数组

PossibleSuperiors
VARIANT
可能包含此类实例的类的路径数组

Containment
VARIANT
可能被包含此类中的类的路径数组

Container
VARIANT_BOOL
指示此类是否为包容器对象类别

HelpFileName
BSTR
帮助文件名

HelpFileContext
long
帮助环境标识符

IADsClass接口只有一个方法Qualifiers,用来返回描述附加限制对象的集合对象。在IADsClass接口的属性中,PrimaryInterface属性可直接指示客户程序去请求对应的接口ID,以便访问该类别所指示的属性,比如,在目录服务中,“User”类指示用户对象实现了一个ADSI接口IADsUser,它包含属性“姓”、“名”、“职称”、“电话”等等。

目录服务技术介绍——ADSI(三)相关推荐

  1. 目录服务技术介绍——ADSI(五)

    由于目录对象的标识名可能在某些操作的影响下被改变,但目录对象的objectGUID属性永远不会改变,所以我们可以直接在LDAP路径中指定此GUID,客户程序直接绑定到此对象,下面的代码显示了这种用法: ...

  2. rrpp协议如何修改_产品技术-RRPP技术介绍-新华三集团-H3C

    RRPP简介 RRPP(Rapid Ring Protection Protocol,快速环网保护协议)是一个专门应用于以太网环的链路层协议.它在以太网环完整时能够防止数据环路引起的广播风暴,而当以太 ...

  3. 线上分享会预告之三维模型检索技术介绍

    大家好.本周公众号将迎来第一位线上直播分享会,此次分享是一次接力,我们希望更多的加入我们一起分享.这里先预告一下,线上直播的时间在本周三晚上19::00,大家多多关注. 本周线上分享会预告 主讲题目: ...

  4. WMI技术介绍和应用——Instance/Method Provider

    在<WMI技术介绍和应用--事件通知>一文中,我们提到了提供者(Provider)这个概念.我们还是要引入WMI的结构图(转载请指明出于breaksoftware的csdn博客) 我们在1 ...

  5. WMI技术介绍和应用——接收事件

    时隔两三年,再次更新WMI系列博文.好在功能在三年前就已经实现了,现在只要补充些实例即可. 之前介绍的基本都是查询静态数据,而本文将要介绍非常有意思的事件接收功能.(转载请指明出于breaksoftw ...

  6. WMI技术介绍和应用——查询硬件信息

    这个月实在太忙了,一直没有时间去继续写WMI的应用例子. 本来是希望将<WMI技术介绍和应用>系列博文写的像WMI百科全书般,但是貌似对这个技术感兴趣的同学并不多,所以我决定对部分知识点点 ...

  7. WMI技术介绍和应用——查询快捷方式、映射磁盘和虚拟内存信息

    本文使用了<WMI技术介绍和应用--使用VC编写一个半同步查询WMI服务的类>中代码做为基础.本节只是列出了WQL语句,具体使用参看前面的例子.(转载请指明出于breaksoftware的 ...

  8. WMI技术介绍和应用——使用VC编写一个半同步查询WMI服务的类

    在<WMI技术介绍和应用--VC开发WMI应用的基本步骤>文中,我们介绍了VC使用WMI技术的基本框架.本节我将讲解封装和实现一个用于半同步查询WMI的类.(转载请指明出于breaksof ...

  9. WMI技术介绍和应用——VC开发WMI应用的基本步骤

    在<WMI技术介绍和应用--WMI概述>中介绍了我们可以使用C++..net或者支持ActiveX技术的脚本语言来使用WMI.但是各种语言对WMI的控制能力是不同的,比如脚本语言只能用来从 ...

最新文章

  1. 显示来自多个表的数据——JOIN
  2. 万众瞩目,2018中国企业数字化转型国际峰会,重磅来袭
  3. java创建node类型数据类型_[Java教程]js DOM Node类型
  4. oracle中匹配函数怎么用,ORACLE 使用正则表达式的函数
  5. Android Studio系列(二)使用Android Studio开发/调试整个android系统源代码(不定时更新)
  6. 每天一道LeetCode-----判断二叉树左右两边是否成镜像关系
  7. JSON数据格式解析库(cJSON、Jansson)的使用在STM32上移植和使用
  8. 嵌入式RT3070 AP模式移植
  9. websocket学习总结记录
  10. go 判断元素是否在slice_golang 判断 两个slice 是否相等
  11. Oracle PL/SQL编程之变量
  12. 随机生成30道四则运算题3—用户可以参与答题,并且有错误提示和计数
  13. 关于手眼标定的误差计算
  14. matlab第三版第五章课后题答案,Matlab第五章答案
  15. DW里面html鼠标点击特效,【好好学习】-DW-鼠标点击 爆米花特效 代码
  16. 请设置注册表项HKLMSoftwareMicrosoft.NETFrameworkInstallRoot,指向.NET Framework安装位置(写给我自己备份的免得以后找不到)
  17. matlab如何求矩阵行列式
  18. 网络安全应该了解的基础大全(收集)
  19. Anaconda prompt 提示系统找不到指定路径
  20. 编程代码:用C语言来实现下雪效果,这个冬天,雪花很美

热门文章

  1. Chapter 02:复合 VS 继承
  2. Java学习笔记(5)——泛型
  3. 自制清理电脑里的垃圾软件
  4. 励志前行,加速BCH创新落地
  5. Web开发常规调试方法与常见问题分析
  6. Jsoup下载图片报错:UnsupportedMimeTypeException
  7. JAVA命令行编译及运行
  8. 3.Linux 文件的压缩与打包
  9. Spring中Quartz的配置
  10. hdu1166 敌兵布阵