Late-bound ADSI clients written in languages such as C and C++ can take advantage of ADSI's rich native data types by calling the IDirectoryObject interface instead of the IADs interface. The IDirectoryObject interface provides methods to support a subset of an object's housekeeping properties and to access its attributes. The following figure shows the relationships among the data structures:
In the preceding figure, the structure ADS_OBJECT_INFO defines properties that identify the object by distinguished name, relative distinguished name, by container (ParentDN), by object type (ClassDN), and by schema definition (SchemaDN). The attribute descriptor ADS_ATTR_INFO consists of a name, data type, an array of data values shown in ADSVALUE, and a flag that directs the underlying DS to perform certain operations on the attributes detailed in ADS_ATTR_* constants. The data types for these attributes include the ADSI extended syntax types, detailed in ADSTYPE.
Note Although IDirectoryObject provides most of the functionality of IADs, as well as new functionality of its own, it does not currently support ADSI container interfaces. Therefore, all ADSI objects must also implement IADs, which does provide such support.