A list of all Active Directory Service Interfaces can be found in ADSI Definitions, but in general, interfaces fall into several groups of functionality.
IADs, IADsContainer, and IADsPropertyList (along with its associated IADsPropertyEntry and IADsPropertyValue) are the fundamental interfaces that supply the foundation for interactions among ADSI objects. You can use their built-in house-keeping functions to keep track of names and hierarchical relationships, and their cache functions for improved performance.
The schema-management interfaces IADsClass, IADsProperty, and IADsSyntax identify the types of objects used to represent a specific directory service. You can use these interfaces to determine what types of objects are known to a specific directory service and to define and add new schema classes at runtime.
You can use IADsMembers, IADsCollection and IADsGroup to define, enumerate, and manage collections of similar objects. Group memberships use are special collections of IADsMembers interfaces.
You can use the interfaces IADsAccessControlEntry, IADsAccessControlList, and IADsSecurityDescriptor to support access control lists.
Use IADsOpenDSObject or the helper function ADsOpenObject to supply credentials to an operating system when first binding to a directory service object.
IDirectorySearch, available only to non-Automation clients, supports the ability to query a directory service and provides several practical means to guide the search for performance reasons. Because ADSI is an OLE DB provider, Automation clients can use the OLE DB-style queries discussed in Using the ADSI OLE DB Provider for Searches.
IDirectoryObject, available only to non-Automation clients, expands the set of supported syntaxes to a wider range, including provider-specific syntaxes. This interface also bypasses the overhead of ADSI housekeeping functions and provides direct, on-the-wire interactions with the directory service.
ADSI supplies implementations of interfaces, such as IADsUser, IADsDomain, and IADsOU, that represent a hierarchical grouping of the underlying data and services. By using these ADSI implementations, an application can maximize its functionality across all namespaces with installed ADSI providers on a network.
ADSI also supplies helper functions for C and C++ client applications.