Freigeben über


Die Schnittstellenproxydatei

Die Schnittstellenproxydatei (U_p.c) ist eine C-Datei, die Routinen enthält, die denen in den Client-Stub- und Server-Stubdateien einer COM-Schnittstelle (Object) entsprechen. Diese Datei enthält Implementierungen der Ersatzroutinen für Client und Server im Inlinemodus des Compilers oder gleichwertige Daten und Thunks in den interpretierten Modi sowie andere geeignete COM-Klebedaten, z. B. proxy- und stub-Vtables.

Die Schnittstellenproxydatei enthält die unterstützenden Routinen und Daten nur für Methoden der Schnittstellen, die in der aktuellen IDL-Datei definiert sind. Um dieses Verhalten zu verdeutlichen, wird in diesem Abschnitt ein erweitertes Beispiel verwendet. Beim Kompilieren einer IDL-Datei mit einer Schnittstelle wie IFaceB, die von IFaceA erbt, werden IFaceB-bezogene Hilfsdaten und -routinen mit der aktuellen Proxydatei generiert, während die IFaceA-bezogenen Basisschnittstellenhilfsdaten und -routinen im Proxy gefunden werden, der aus der IDL-Datei generiert wird, die die IFaceA-Definition enthält. Der Compiler generiert alle Daten, die erforderlich sind, um die Ersatzfunktionen der Basisschnittstelle zu identifizieren und bei Bedarf an diese zu delegieren, um die über die IFaceB-Schnittstelle verwendeten IFaceA-Methoden zu unterstützen.

Für jede Methode in einer Schnittstelle in der aktuellen IDL-Datei enthält die Proxydatei die folgenden beiden Ersatzmethoden, wenn sie im gemischten Modus (/Os) kompiliert werden, und entsprechende Interpreterdaten, wenn sie im Interpretermodus (/Oi) kompiliert werden.

  • Das clientseitige Ersatzmodell, z. B. IFaceB_Method_Proxy in diesem Beispiel.

    Dieser clientseitige Ersatz ist der virtuelle Einstiegspunkt, an den der Client, z. B. IFaceB::Method, sendet. Es marshallt die Eingabeargumente in eine übertragbare Form, überträgt die gemarselten Argumente zusammen mit Informationen, die die Schnittstelle und den Vorgang identifizieren, und hebt dann den Rückgabewert und alle Ausgabeargumente auf, wenn der aufgerufene Vorgang zurückgibt.

  • Das serverseitige Ersatzmodell, z. B. IFaceB_Method_Stub .

    Dieser serverseitige Ersatz ist der virtuelle Einstiegspunkt, den die zugrunde liegende Runtime auf dem Server sendet, um den Client zu emulieren. Es hebt die Eingabeargumente auf, um die Clientdaten zu replizieren, ruft die Implementierung der Schnittstellenfunktion des Servers auf und überträgt dann den Rückgabewert und alle Ausgabeargumente zurück an die Clientseite.

Der Standardname für eine Proxydatei, die aus einer datei.idl generiert wird, lautet file_p.c.Verwenden Sie den Midl-Compilerschalter /proxy , um den Standardnamen der Schnittstellenproxydatei außer Kraft zu setzen. Die Schalter /env und /out wirken sich auf diese Datei aus.