Erneutes Anzeigen von COM-Aggregationsregeln mit ADSI-Erweiterungen
Im Folgenden finden Sie eine kurze Übersicht über die COM-Aggregation und ADSI-Erweiterungsregeln.
Die CreateInstance-Methode gibt wie folgt einen Zeiger auf eine IUnknown-Schnittstelle zurück, die keine Funktionsaufrufe an den Aggregator delegiert.
Die IUnknown::QueryInterface-Methode gibt Zeiger auf die schnittstellen zurück, die sie unterstützt, und Fehler für Schnittstellen, die sie nicht unterstützt.
Die IUnknown::AddRef-Methode erhöht den Verweiszähler für das aggregierte Erweiterungsobjekt selbst.
Die IUnkown::Release-Methode dekrementiert den Verweiszähler für das aggregierte Erweiterungsobjekt selbst und zerstört sich selbst, wenn der Verweiszähler 0 ist.
Das Erweiterungsobjekt sollte den IUnknown-Zeiger des Aggregators, z. B. m pOuterUnknown, während der Implementierung der _ CreateInstance-Methode speichern.
Alle Schnittstellen, die das Erweiterungsobjekt unterstützt, einschließlich IADsExtension,sollten von IUnknown erben,das alle Funktionsaufrufe zurück an den Aggregator delegiert.
- IUnknown::QueryInterface ruft "m _ pOuterUnknown->QueryInterface" auf.
- IUnknown::AddRef ruft "m _ pOuterUnknown->AddRef" auf.
- IUnkown::Release ruft "m _ pOuterUnknown->Release" auf.
Erweiterungsautoren können jede interne Implementierung auswählen, die sie bevorzugen, solange sie standarden COM-Aggregationsregeln folgen. Beachten Sie, dass ein Erweiterungsobjekt nicht als eigenständiges Objekt funktionieren muss. Erweiterungen sind so konzipiert, dass sie als Aggregate funktionieren. Eine Erweiterung kann jedoch so geschrieben werden, dass sie sowohl als eigenständiges Objekt als auch als Aggregat funktioniert.
Zusätzlich zur standardmäßigen COM-Aggregationsunterstützung unterstützt ein Erweiterungsobjekt möglicherweise IADsExtension für erweiterte Features. Wenn späte Bindung unterstützt wird, sollte die Erweiterung:
- Delegieren Sie Funktionen für IDispatch zurück an den Aggregator.
- Implementieren Sie die IDispatch-Schnittstelle in IADsExtension.