本主題提供從抽象架構讀取的程式代碼範例和指導方針,其中提供儲存在架構容器中 attributeSchema 和 classSchema 物件中的數據子集。 若要擷取在抽象架構中無法取得的資料,請按 讀取 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 | 擷取必須為類別實例設定的必要屬性陣列。 傳回的清單包含所有 mustContain 和 systemMustContain 的值,這些值來自於該類別及衍生自該類別的所有類別,包括超類別和輔助類別。 |
| IADsClass.OID | 擷取類別的governsID。 |
| IADsClass.OptionalProperties | 擷取可能為類別實例設定的選擇性屬性陣列。 傳回的清單包含所有 mayContain 和 systemMayContain 類別的值及其衍生來源類別,包括超級類別和輔助類別。 |
| IADsClass.PossibleSuperiors | 擷取類別 possibleSuperiors 的陣列 值,指出可包含這個類別對象的物件類別。 |
抽象架構會儲存在架構容器中的 subSchema 物件中。 若要取得 subSchema 對象的辨別名稱,請系結至 rootDSE 並讀取 subSchemaSubEntry 屬性,如 無伺服器系結和 RootDSE中所述。 請注意,透過系結至 「LDAP://schema」 來讀取抽象架構比直接系結至 subSchema 物件更有效率。