COM-Schnittstellenzeiger

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu COM-Schnittstellen


Ein Schnittstellenzeiger ist ein Zeiger auf eine Objektinstanz, die ihrerseits auf die Implementierung der jeweiligen Methode in der Schnittstelle zeigt. Auf die Implementierung wird über ein Array von Zeigern zugegriffen, das vtable genannt wird. Diese Tabellen virtueller Funktionen ähneln dem Mechanismus zur Unterstützung virtueller Funktionen in Delphi. Wegen dieser Ähnlichkeit kann der Compiler Aufrufe von Schnittstellenmethoden in gleicher Weise auflösen wie Aufrufe von Methoden von Delphi-Klassen.

Die VTable wird von allen Instanzen einer Objektklasse gemeinsam benutzt, sodass der Objekt-Quelltext jeder Objektinstanz eine zweite Struktur zuweist, die dessen private-Daten enthält. Der Schnittstellenzeiger des Clients fungiert dann als Zeiger auf den Zeiger zur vtable, wie aus der folgenden Abbildung zu ersehen ist.

Schnittstelle Vtable

Windows 2000 und seine Nachfolger enthalten für Objekte, die unter COM+ ablaufen, eine zusätzliche Ebene (Interceptor) zwischen dem Schnittstellenzeiger und dem vtabel-Zeiger. Der Schnittstellenzeiger des Clients zeigt auf den Interceptor, der wiederum auf die VTable zeigt. Dadurch kann COM+ Dienste wie Just-In-Time-Aktivierung anbieten, wobei der Server dynamisch und für den Client undurchlässig deaktiviert und reaktiviert werden kann. Dazu muss COM+ sicherstellen, dass sich der Interceptor wie ein normaler VTable-Zeiger verhält.

Siehe auch