Freigeben über


com_interface_entry (C++)

Fügt einen Eintrag Schnittstellen in die COM-Zuordnung der Zielklasse hinzu.

[ com_interface_entry( 
   com_interface_entry
 ) ]

Parameter

  • com_interface_entry
    Eine Zeichenfolge, die den tatsächlichen Text des Eintrags enthält.Eine Liste der möglichen Werte finden Sie unter COM_INTERFACE_ENTRY-Makros.

Hinweise

Das Attribut com_interface_entry C++ fügt die ungekürzten Inhalt einer Zeichenfolge in die COM-Schnittstellenzuordnung des Zielobjekts.Wenn das Attribut auf das Zielobjekt einmal angewendet wurde, wird der Eintrag in den Beginn der vorhandenen Schnittstellen eingefügt zugeordnet.Wenn das Attribut wiederholt auf dasselbe Zielobjekt angewendet wird, werden die Einträge am Anfang der Schnittstellen in der Reihenfolge zugeordnet eingefügt, die sie empfangen werden.

Dieses Attribut erfordert, dass Co-Klasse, ProgIDoder vi_progid-Attribut (oder ein anderes Attribut, das ein solcher Test vorhanden), bedeutet auch auf das gleiche Element übernommen werden.Wenn ein einzelnes Attribut wird, die anderen zwei automatisch angewendet werden.Wenn z. B. progid angewendet wird, werden vi_progid und coclass ebenfalls angewendet.

Da die erste Verwendung von com_interface_entry bewirkt, dass die neue Schnittstelle zugeordnet zu Beginn der Schnittstellen eingefügt werden soll, muss sie eine der folgenden COM_INTERFACE_ENTRY-Typen sein:

  • COM_INTERFACE_ENTRY

  • COM_INTERFACE_ENTRY_IID

  • COM_INTERFACE_ENTRY2

  • COM_INTERFACE_ENTRY2_IID

Zusätzliche Verwendung des com_interface_entry-Attributs kann alle unterstützten COM_INTERFACE_ENTRY-Typen verwenden.

Diese Einschränkung ist erforderlich, da ATL den ersten Eintrag in der Schnittstellen als Identität zugeordnet IUnknownverwendet. Daher muss der Eintrag eine gültige Schnittstelle sein.Beispielsweise ist das folgende Codebeispiel ungültig, da der erste Eintrag in der Schnittstellen keine wirkliche COM-Schnittstelle zugeordnet.

[ coclass, com_interface_entry =
    "COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"
]
   class CMyClass
   {
   };

Beispiel

Der folgende Code fügt zwei Einträge in der vorhandenen COM-Schnittstellenzuordnung von CMyBaseClasshinzu.Das erste Element ist eine Standardschnittstelle und die zweite blendet die IDebugTest-Schnittstelle aus.

// cpp_attr_ref_com_interface_entry.cpp
// compile with: /LD
#define _ATL_ATTRIBUTES
#include "atlbase.h"
#include "atlcom.h"

[module (name ="ldld")];

[ object,
  uuid("7dbebed3-d636-4917-af62-c767a720a5b9")]
__interface IDebugTest{};

[ object,
  uuid("2875ceac-f94b-4087-8e13-d13dc167fcfc")]
__interface IMyClass{};

[ coclass,
  com_interface_entry ("COM_INTERFACE_ENTRY (IMyClass)"),
  com_interface_entry ("COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"),
  uuid("b85f8626-e76e-4775-b6a0-4826a9e94af2")
]

class CMyClass: public IMyClass, public IDebugTest
{
};

Die resultierende COM-Objekt-Karte für CMyBaseClass lautet wie folgt:

    BEGIN_COM_MAP(CMyClass)
        COM_INTERFACE_ENTRY (IMyClass)
        COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)
        COM_INTERFACE_ENTRY(IMyClass)
        COM_INTERFACE_ENTRY2(IDispatch, IMyClass)
        COM_INTERFACE_ENTRY(IDebugTest)
        COM_INTERFACE_ENTRY(IProvideClassInfo)
    END_COM_MAP()

Anforderungen

Attribut-Kontext

Betrifft

Klasse, struct

Wiederholbar

Ja

Erforderliche Attribute

Ein oder mehrere der folgenden Schritte aus: coclass, progidoder vi_progid.

Ungültige Attribute

None

Weitere Informationen über das kontexte finden Sie unter Attribut-Kontexte.

Siehe auch

Weitere Ressourcen

von COM-Attributen

Klassen-Attribute

TypeDef-, Enumeration, Union und Struktur-Attribute

Attributes Samples