讀取抽象架構
本主題提供從抽象架構讀取的程式代碼範例和指導方針,其中提供儲存在 schema容器中 attributeSchema 和 classSchema 物件中的數據子集。 若要擷取抽象架構中無法使用的數據,請直接從架構容器讀取數據,如 Reading attributeSchema 和 classSchema Objects 中所述。
使用 「LDAP://schema」 系結字串,系結至 抽象架構上的 IADsContainer 指標。 使用此指標列舉抽象架構中的類別、屬性和語法專案。 您也可以使用 IADsContainer.GetObject 方法來擷取個別專案。
// Bind to the abstract schema.
IADsContainer *pAbsSchema = NULL;
hr = ADsGetObject(L"LDAP://schema",
IID_IADsContainer,
(void**)&pAbsSchema);
' Bind to the abstract schema.
Dim adschema As IADsContainer
Set adschema = GetObject("LDAP://schema")
使用類似的系結字串 「LDAP://schema/< object>」,直接系結至抽象架構中的類別或屬性專案。 在此字串中,“<object>” 是 類別或屬性的 lDAPDisplayName 。 對於系結至 IADsClass 介面的類別;針對屬性,系結至 IADsProperty 介面。
// Bind to the user class entry in the abstract schema.
IADsClass *pClass;
hr = ADsGetObject(L"LDAP://schema/user",
IID_IADsClass,
(void**)&pClass);
Bind to the user class entry in the abstract schema.
Dim userclass As IADsClass
Set userclass = GetObject("LDAP://schema/user")
此外,IADs 介面會提供 IADs.Schema 屬性。 這個屬性會以抽象架構系結字串格式傳回物件類別的 ADsPath。 如果您有 物件的 IADs 指標,您可以使用從 IADs.Schema 傳回的 ADsPath,系結至抽象架構中的類別。
針對類別,下表列出抽象架構所提供的索引鍵屬性。
屬性 | 意義 |
---|---|
IADsClass.Abstract | 指出這是否為抽象類。 |
IADsClass.Auxiliary | 指出這是否為輔助類別。 |
IADsClass.AuxDerivedFrom | 這個類別衍生自的輔助類別陣列。 |
IADsClass.Container | 指出這個類別的物件是否可以包含其他物件,如果任何類別在其可能Superiors 清單中包含這個類別,則為 true。 |
IADsClass.DerivedFrom | 這個類別衍生自的類別陣列。 |
IADsClass.MandatoryProperties | 擷取必須為類別實例設定的必要屬性陣列。 傳回的清單包含類別的所有 mustContain 和 systemMustContain 值,以及其衍生來源的類別,包括超級類別和輔助類別。 |
IADsClass.OID | 擷取 類別的 governsID。 |
IADsClass.OptionalProperties | 擷取可能為類別實例設定的選擇性屬性陣列。 傳回的清單包含類別的所有 mayContain 和 systemMayContain 值,以及其衍生來源的類別,包括超級類別和輔助類別。 |
IADsClass.PossibleSuperiors | 擷取 類別之 possibleSuperiors 值的陣列,指出可包含這個類別之物件的物件類別。 |
抽象架構會儲存在 架構容器的subSchema 物件中。 若要取得 subSchema 物件的辨別名稱,請系結至 rootDSE 並讀取 subSchemaSubEntry 屬性,如無伺服器系結和 RootDSE 中所述。 請注意,透過系結至 「LDAP://schema」 來讀取抽象架構比直接系結至 subSchema 物件更有效率。