网站首页/技术开发列表/内容

目录服务技术介绍——ADSI(3)

技术开发2021-11-16阅读
表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,它包含属性“姓”、“名”、“职称”、“电话”等等。


……

相关阅读