表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,它包含属性“姓”、“名”、“职称”、“电话”等等。
|