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.