Lendo o esquema abstrato
Este tópico fornece um exemplo de código e diretrizes para leitura do esquema abstrato, que fornece um subconjunto dos dados armazenados nos objetos attributeSchema e classSchema no contêiner de esquema. Para recuperar dados que não estão disponíveis no esquema abstrato, leia os dados diretamente do contêiner do esquema, conforme descrito em Reading attributeSchema e classSchema Objects.
Use a cadeia de caracteres de vinculação "LDAP://schema" para vincular a um ponteiro IADsContainer no esquema abstrato. Use esse ponteiro para enumerar as entradas de classe, atributo e sintaxe no esquema abstrato. Você também pode usar o método IADsContainer.GetObject para recuperar entradas individuais.
// 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")
Use uma cadeia de caracteres de vinculação semelhante, "LDAP://schema/< object>", para vincular diretamente a uma entrada de classe ou atributo no esquema abstrato. Nessa cadeia de caracteres, "object>"< é o lDAPDisplayName de uma classe ou atributo. Para classes vincule à interface IADsClass; para atributos, associe-se à interface 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")
Além disso, a interface IADs fornece a propriedade IADs.Schema. Essa propriedade retorna o ADsPath para a classe de objeto no formato de cadeia de caracteres de vinculação de esquema abstrato. Se você tiver um ponteiro de IADs para um objeto, poderá vincular a sua classe no esquema abstrato usando o ADsPath retornado de IADs.Schema.
Para classes, a tabela a seguir lista as propriedades de chave fornecidas pelo esquema abstrato.
Propriedade | Significado |
---|---|
IADsClass.Abstract | Indica se esta é uma classe abstrata. |
IADsClass.Auxiliar | Indica se esta é uma classe auxiliar. |
IADsClass.AuxDerivedFrom | Matriz de classes auxiliares das quais essa classe deriva. |
IADsClass.Container | Indica se os objetos dessa classe podem conter outros objetos, o que é verdadeiro se qualquer classe incluir essa classe em sua lista de possíveisSuperiors. |
IADsClass.DerivedFrom | Matriz de classes da qual essa classe é derivada. |
IADsClass.MandatoryProperties | Recupera uma matriz das propriedades obrigatórias que devem ser definidas para uma instância da classe. A lista retornada inclui todos os valores mustContain e systemMustContain para a classe e as classes das quais ela é derivada, incluindo superclasses e classes auxiliares. |
IADsClass.OID | Recupera o governsID da classe. |
IADsClass.OptionalProperties | Recupera uma matriz das propriedades opcionais que podem ser definidas para uma instância da classe. A lista retornada inclui todos os valores mayContain e systemMayContain para a classe e as classes das quais ela é derivada, incluindo superclasses e classes auxiliares. |
IADsClass.PossibleSuperiors | Recupera uma matriz dos valores possibleSuperiors para a classe, que indica as classes de objeto que podem conter objetos dessa classe. |
O esquema abstrato é armazenado no objeto subSchema no contêiner de esquema. Para obter o nome distinto do objeto subSchema, vincule-se ao rootDSE e leia o atributo subSchemaSubEntry, conforme descrito em Serverless Binding e RootDSE. Lembre-se de que é mais eficiente ler o esquema abstrato vinculando-se a "LDAP://schema", do que vinculando-se diretamente ao objeto subSchema .