Freigeben über


COM_INTERFACE_ENTRY-Makros

Diese Makros geben die Schnittstellen eines Objekts in seine COM-Zuordnung ein, damit auf sie von QueryInterface zugegriffen werden kann.Die Reihenfolge der Einträge in der COM-Zuordnung ist die Reihenfolgenschnittstellen wird überprüft für entsprechendes IID während QueryInterface.

Jedes Objekt, das die Schnittstellen verfügbar zu QueryInterface ausführen möchte, muss seine eigene COM-Zuordnung haben.Die COM-Zuordnungs-Anfänge mit dem Makro BEGIN_COM_MAP.Schnittstelleneinträge sind ein oder mehrere der COM_INTERFACE_ENTRY-Makros hinzugefügt, und die Zuordnung wird dem END_COM_MAP-Makro abgeschlossen.Beispiel:

BEGIN_COM_MAP(CMyObject)
   COM_INTERFACE_ENTRY(IMyObject)
   COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()

Beachten Sie, dass der erste Eintrag in der COM-Zuordnung eine Schnittstelle auf dem Objekt sein muss, das die COM-Zuordnung enthält.Daher können Sie die COM-Zuordnungs-Einträge mit COM_INTERFACE_ENTRY_CHAIN nicht starten, das die COM-Zuordnung eines anderen Objekts bewirkt, dass am Punkt gefunden werden, in dem COM_INTERFACE_ENTRY_CHAIN(COtherObject) in der COM-Zuordnung des Objekts wird angezeigt.Wenn Sie die COM-Zuordnung eines anderen Objekts zuerst suchen möchten, fügen Sie einen Schnittstelleneintrag für IUnknown der COM-Zuordnung hinzu, und verketten Sie die COM-Zuordnung des anderen Objekts.Beispiel:

BEGIN_COM_MAP(CThisObject)
   COM_INTERFACE_ENTRY(IUnknown)
   COM_INTERFACE_ENTRY_CHAIN(CBase)
END_COM_MAP()
WarnhinweisVorsicht

Ab Version 3.0, verwendet das ATL Compilerschlüsselwort __uuidof( class ), erhält das entsprechende IID für eine angegebene Klasse.Aufgrund der Änderungen in den COM_INTERFACE_ENTRY-Makros, die in Version 3.0, jetzt schließen Sie effektiv sind, einfach den Header für die Schnittstelle ein, um zu verwenden, anstatt, auch einen Link zu einer Bibliothek, die das entsprechende IID für diese Schnittstelle definiert.Diese Änderung kann Probleme verursachen, wenn der Header zuvor mit einer früheren Version von MIDL generiert wurde oder wenn er handcodiert wurde und nicht entsprechend markiert.Wenn die Deklaration für die Schnittstelle im Header nicht mit einem zugeordneten __declspec( uuid ) markiert wurde, schlägt jeder Versuch, das __uuidof-Schlüsselwort für diese Schnittstelle zu verwenden aus.Sie können zu den älteren wiederherstellen (Makros ATL 2.x) COM_INTERFACE_ENTRY durch Definieren von _ATL_NO_UUIDOF in den Buildeinstellungen zur Arbeit um die Probleme mit diesem neuen Verhalten.

COM-Zuordnungs-Eintrags-Makros

Im Folgenden werden die verfügbaren Eintragsmakros:

Anforderungen

Header: möchten

Siehe auch

Weitere Ressourcen

COM-Zuordnungs-Makros

ATL-Makros