Udostępnij przez


Odczytywanie schematu abstrakcyjnego

Niniejszy temat zawiera przykład fragmentu kodu i wskazówki dotyczące odczytywania ze schematu abstrakcyjnego, który dostarcza podzbiór danych przechowywanych w obiektach attributeSchema i classSchema w kontenerze schematu. Aby pobrać dane niedostępne w schemacie abstrakcyjnym, należy odczytać dane bezpośrednio z kontenera schematu zgodnie z opisem w Reading attributeSchema i classSchema Objects.

Użyj ciągu powiązania "LDAP://schema", aby powiązać go z wskaźnikiem IADsContainer w schemacie abstrakcyjnym. Użyj tego wskaźnika, aby wyliczyć wpisy klasy, atrybutu i składni w schemacie abstrakcyjnym. Możesz również użyć metody IADsContainer.GetObject, aby pobrać poszczególne wpisy.

// 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")

Użyj podobnego ciągu powiązania "LDAP://schema/<obiekt>", aby powiązać bezpośrednio z wpisem klasy lub atrybutu w schemacie abstrakcyjnym. W tym ciągu "<object>" jest lDAPDisplayName klasy lub atrybutu. W przypadku klas powiązać z interfejsem IADsClass; w przypadku atrybutów powiązać z interfejsem 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")

Ponadto interfejs IADs udostępnia właściwość IADs.Schema . Ta właściwość zwraca ścieżkę ADsPath dla klasy obiektu w formacie ciągu powiązania schematu abstrakcyjnego. Jeśli masz identyfikatory wskaźnika do obiektu, możesz powiązać z nią klasę w schemacie abstrakcyjnym przy użyciu ścieżki ADsPath zwróconej z IADs.Schema.

W przypadku klas w poniższej tabeli wymieniono właściwości klucza udostępniane przez schemat abstrakcyjny.

Własność Znaczenie
IADsClass.Abstract Wskazuje, czy jest to klasa abstrakcyjna.
IADsClass.Auxiliary Wskazuje, czy jest to klasa pomocnicza.
IADsClass.AuxDerivedFrom Tablica klas pomocniczych, z których pochodzi ta klasa.
IADsClass.Container Wskazuje, czy obiekty tej klasy mogą zawierać inne obiekty, co jest prawdziwe, jeśli jakakolwiek klasa zawiera tę klasę na liście możliwychSuperiors.
IADsClass.DerivedFrom Tablica klas, z których pochodzi ta klasa.
IADsClass.MandatoryProperties Pobiera tablicę obowiązkowych właściwości, które muszą być ustawione dla wystąpienia klasy. Zwracana lista zawiera wszystkie wartości mustContain i systemMustContain dla klasy oraz klas, z których się wywodzi, w tym superklas i klas pomocniczych.
IADsClass.OID Pobiera identyfikator governsID dla klasy.
IADsClass.OptionalProperties Pobiera tablicę opcjonalnych właściwości, które mogą być ustawione dla wystąpienia klasy. Zwracana lista zawiera wszystkie wartości mayContain i systemMayContain wartości dla klasy i klas, z których pochodzi, w tym superklasy i klas pomocniczych.
IADsClass.PossibleSuperiors Pobiera tablicę możliwychSuperiors wartości dla klasy, która wskazuje klasy obiektów, które mogą zawierać obiekty tej klasy.

 

Schemat abstrakcyjny jest przechowywany w obiekcie subSchema w kontenerze schematu. Aby uzyskać nazwę wyróżniającą obiektu subSchema, połącz z rootDSE i odczytaj atrybut subSchemaSubEntry, zgodnie z opisem w Powiązania bezserwerowe i RootDSE. Należy pamiętać, że bardziej wydajne jest odczytywanie schematu abstrakcyjnego przez powiązanie z "LDAP://schema", niż powiązanie bezpośrednio z obiektem subSchema.