共用方式為


讀取抽象架構

本主題提供從抽象架構讀取的程式代碼範例和指導方針,其中提供儲存在架構容器中 attributeSchemaclassSchema 物件中的數據子集。 若要擷取在抽象架構中無法取得的資料,請按 讀取 attributeSchema 和 classSchema 物件中所述,直接從架構容器讀取資料。

使用 「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/<物件>」直接綁定至架構定義中的類別或屬性條目。 在此字串中,“<物件>” 是類別或屬性的 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 指出這個類別的物件是否可以包含其他物件,如果任何類別在其 possibleSuperiors 清單中包含這個類別,則為 true。
IADsClass.DerivedFrom 這個類別衍生自的類別陣列。
IADsClass.MandatoryProperties 擷取必須為類別實例設定的必要屬性陣列。 傳回的清單包含所有 mustContainsystemMustContain 的值,這些值來自於該類別及衍生自該類別的所有類別,包括超類別和輔助類別。
IADsClass.OID 擷取類別的governsID。
IADsClass.OptionalProperties 擷取可能為類別實例設定的選擇性屬性陣列。 傳回的清單包含所有 mayContainsystemMayContain 類別的值及其衍生來源類別,包括超級類別和輔助類別。
IADsClass.PossibleSuperiors 擷取類別 possibleSuperiors 的陣列 值,指出可包含這個類別對象的物件類別。

 

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