Wie ADSI Erweiterungen integriert

In den folgenden Richtlinien wird beschrieben, wie ADSI mit Erweiterungen interagiert:

  • Etwas wird an ein ADSI-Verzeichnisobjekt gebunden. Beispiel: "LDAP://CN=JeffSmith,OU=Sales,DC=Fabrikam,DC=COM".
  • ADSI identifiziert, dass sich das Objekt in der Benutzerklasse befindet.
  • ADSI führt eine Suche in der Registrierung durch und identifiziert die Erweiterungs-CLSIDs für den Benutzer. Beachten Sie, dass ADSI diese Daten zwischenspeichert.
  • Etwas ruft die QueryInterface-Methode für IID_IMyExtension auf. ADSI durchsucht die Schnittstellen, die dem Benutzerobjekt zugeordnet sind, beginnend mit seinen eigenen Schnittstellen und dann nach Erweiterungsschnittstellen.
  • Wenn eine Übereinstimmung gefunden wird, erstellt ADSI eine instance der Komponente, die IID_IMyExtension unterstützt, und ruft QueryInterface für die Erweiterung auf. Die resultierende Schnittstelle wird zurückgegeben.
  • Der Benutzer verwendet diese Schnittstelle, um die Schnittstellenmethoden aufzurufen.
  • Als Nächstes ruft der Client QueryInterface für IID_IYourExtension auf, die sich in einer anderen Komponente befindet. Diese Komponente delegiert diesen QueryInterface-Aufruf an die IUnknown-Schnittstelle des Aggregators, bei der es sich zufällig um ADSI selbst handelt.
  • Wieder durchsucht ADSI die Schnittstellen und erstellt die Komponenten instance.