Späte Bindung im Vergleich zu VTable-Zugriff im ADSI-Erweiterungsmodell

Eine duale Schnittstelle ermöglicht direkten vtable-Zugriff auf alle ihre Funktionen, während eine Dispatchschnittstelle dies nicht tut. Ein C/C++-Client kann einen Dual Interface-Zeiger abfragen und direkten vtable-Zugriff verwenden, um seine Funktionen aufzurufen. Dies ermöglicht einen schnelleren Zugriff als das Aufrufen der Funktion mithilfe der Funktionen IDispatch::GetIDsOfNames und IDispatch::Invoke. Dies gilt insbesondere für das Erweiterungsmodell, da alle dualen Schnittstellen in einem Erweiterungsobjekt ihre Funktionen GetIDsOfNames und Invoke zuerst an den Aggregator (ADSI) delegieren müssen. Der Aggregator muss dann zusätzliche interne Schritte ausführen, um zu ermitteln, welches Erweiterungsobjekt, möglicherweise einschließlich des Aggregators selbst, Unterstützung für die aufgerufene Funktion bereitstellt und den Aufruf an das entsprechende Objekt umleitet.

Visual Basic ruft auch eine Dual-Interface-Funktion mit direktem Zugriff auf eine vtable auf, wenn sie über einen Zeiger auf die Schnittstelle und Zugriff auf Typdaten aus der Typbibliothek verfügt. ADSI-Clients, die in Visual Basic geschrieben wurden, können explizit einen Zeiger auf eine duale Schnittstelle angeben, z. B. IADs,und so den vtable-Zugriff auf Funktionen in der Schnittstelle ermöglichen.

Dim inf as IADs
 
Set inf = GetObject("LDAP://CN=jeffsmith,DC=fabrikam,DC=com") ' An object that supports IADsDualInf.
inf.Get("name") 'IADs.Get() will be invoked through direct vtable access.

Da eine IDispatch-Schnittstelle keinen vtable-Zugriff unterstützt, gilt dieses Beispiel nicht. Das heißt, eine Dispatchfunktion wird immer nur über die Funktionen IDispatch::GetIDsOfNames und IDispatch::Invoke aufgerufen.

Aktuelle Versionen von VBScript und JScript unterstützen auch keinen vtable-Zugriff. Daher funktioniert eine duale Schnittstelle in einer VBScript- oder JScript-Umgebung wie eine Dispatchschnittstelle.