Schema Interfaces

The schema container contains a set of schema definitions that are attached to part of the namespace tree of the provider. Typically, each instance of a namespace has its own schema. For example, in the following figure, the ADSI example provider defines a schema container in each of the root nodes "Seattle" and "Toronto".

Schema containment

To create an ADSI implementation for a provider, you need to supply schema management objects that reflect the underlying namespace of the provider and which support ADSI schema interfaces. The following is a list of the ADSI schema interfaces, which are contained in the schema container.

  • IADsClass represents directory service classes.
  • IADsProperty represents directory service properties that have single or multiple values.
  • IADsSyntax represents the single VARIANT type.

Interfaces defined by ADSI can support specific properties and syntaxes for your provider. Providers can choose to extend an ADSI definition by using the methods that create and access properties, for example, you can use the methods of the IADs interface such as Get, GetEx, Put and PutEx. Providers can also support additional properties through additional interfaces. For a complete list of ADSI interfaces, see ADSI Interfaces.

An ADSI provider component with a complex namespace might allow multiple schemas to exist in a namespace instance, each at a different part of the tree. The IADs::Schema property of an object, however, always names its own schema definition.