top
Loading...
目錄服務技術介紹——ADSI(三)
表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,它包含屬性“姓”、“名”、“職稱”、“電話”等等。


北斗有巢氏 有巢氏北斗