com_interface_entry (C++)

Fügt der COM-Zuordnung der Zielklasse einen Schnittstelleneintrag hinzu.

Syntax

[ 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 com_interface_entry C++-Attribut fügt den ungekürzten Inhalt einer Zeichenfolge in die COM-Schnittstellenzuordnung des Zielobjekts ein. Wenn das Attribut einmal auf das Zielobjekt angewendet wird, wird der Eintrag am Anfang der vorhandenen Schnittstellenzuordnung eingefügt. Wenn das Attribut wiederholt auf dasselbe Zielobjekt angewendet wird, werden die Einträge am Anfang der Schnittstellenzuordnung in der Reihenfolge eingefügt, in der sie empfangen werden.

Dieses Attribut erfordert, dass die Attribute coclass, progid, oder vi_progid (oder ein anderes Attribut, das eines der genannten impliziert) auch auf demselben Element angewendet werden. Wenn ein einzelnes Attribut verwendet wird, werden die anderen beiden automatisch angewendet. Wenn sie beispielsweise progid angewendet vi_progid wird und coclass auch angewendet werden.

Da die erste Verwendung von com_interface_entry bewirkt, dass die neue Schnittstelle am Anfang der Schnittstellenzuordnung eingefügt wird, muss sie einer der folgenden COM_INTERFACE_ENTRY Typen sein:

  • COM_INTERFACE_ENTRY

  • COM_INTERFACE_ENTRY_IID

  • COM_INTERFACE_ENTRY2

  • COM_INTERFACE_ENTRY2_IID

Zusätzliche Verwendungen des attributs com_interface_entry können alle unterstützten COM_INTERFACE_ENTRY Typen verwenden.

Diese Einschränkung ist erforderlich, da ATL den ersten Eintrag in der Schnittstellenzuordnung als Identität IUnknownverwendet. Daher muss der Eintrag eine gültige Schnittstelle sein. Das folgende Codebeispiel ist beispielsweise ungültig, da der erste Eintrag in der Schnittstellenzuordnung keine tatsächliche COM-Schnittstelle angibt.

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

Beispiel

Der folgende Code fügt der vorhandenen COM-Schnittstellenzuordnung CMyBaseClasszwei Einträge hinzu. Die erste 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-Objektzuordnung lautet CMyBaseClass 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

Attributkontext Wert
Gilt für class, struct
Wiederholbar Ja
Erforderliche Attribute Eine oder mehrere der folgenden: coclass, , progidoder vi_progid.
Ungültige Attribute None

Weitere Informationen zu den Attributkontexten finden Sie unter Attributkontexte.

Siehe auch

COM-Attribute
Klassenattribute
typedef-, enum-, union- und struct-Attribute