How ADSI Integrates Extensions

The following guidelines describe how ADSI interacts with extensions:

  • Something binds to an ADSI directory object. For example, "LDAP://CN=JeffSmith,OU=Sales,DC=Fabrikam,DC=COM".
  • ADSI identifies that the object is in the user class.
  • ADSI performs a lookup in the registry and identifies the extension CLSIDs for user. Be aware that ADSI caches this data.
  • Something calls the QueryInterface method for IID_IMyExtension. ADSI searches the interfaces associated with the user object, starting with its own interfaces, then looking at extension interfaces.
  • If a match is found, ADSI creates an instance of the component that supports IID_IMyExtension, and calls QueryInterface for the extension. The resulting interface is returned.
  • The user uses this interface to call the interface methods.
  • Next, the client calls QueryInterface for IID_IYourExtension, which is in a different component. This component delegates this QueryInterface call to the IUnknown interface of the aggregator, which happens to be ADSI itself.
  • Again, ADSI searches the interfaces and creates the component instance.