共用方式為


讀取抽象架構

本主題提供從抽象架構讀取的程式代碼範例和指導方針,其中提供儲存在 schema容器中 attributeSchemaclassSchema 物件中的數據子集。 若要擷取抽象架構中無法使用的數據,請直接從架構容器讀取數據,如 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 擷取必須為類別實例設定的必要屬性陣列。 傳回的清單包含類別的所有 mustContainsystemMustContain 值,以及其衍生來源的類別,包括超級類別和輔助類別。
IADsClass.OID 擷取 類別的 governsID。
IADsClass.OptionalProperties 擷取可能為類別實例設定的選擇性屬性陣列。 傳回的清單包含類別的所有 mayContainsystemMayContain 值,以及其衍生來源的類別,包括超級類別和輔助類別。
IADsClass.PossibleSuperiors 擷取 類別之 possibleSuperiors 值的陣列,指出可包含這個類別之物件的物件類別。

 

抽象架構會儲存在 架構容器的subSchema 物件中。 若要取得 subSchema 物件的辨別名稱,請系結至 rootDSE 並讀取 subSchemaSubEntry 屬性,如無伺服器系結和 RootDSE 中所述 請注意,透過系結至 「LDAP://schema」 來讀取抽象架構比直接系結至 subSchema 物件更有效率。