|
表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 |
指示此类别是否为抽象类,若是的话,则它不能被实例化,但其它类可以继承该类别 |
|
|
|
 |
| |
|