Definieren von COM-Schnittstellen

Microsoft definiert viele COM-Schnittstellen. In den meisten Fällen können Sie diese generischen Schnittstellen wiederverwenden. Einige Anwendungen haben jedoch bestimmte Anforderungen, die es wünschenswert oder notwendig machen, eigene Objektschnittstellen zu definieren.

Alle COM-Schnittstellen müssen direkt oder indirekt von der IUnknown-Schnittstelle abgeleitet werden. Innerhalb dieser Einschränkung kann Ihre benutzerdefinierte Schnittstelle fast jede Methode oder jeden Parameter unterstützen, einschließlich asynchroner Methoden. Sie können auch eine Typbibliothek für Ihre benutzerdefinierten Schnittstellen generieren, damit Clients zur Laufzeit auf Informationen zu den Methoden Ihres Objekts zugreifen können. Nachdem Sie eine Schnittstelle definiert, in Microsoft Interface Definition Language (MIDL) beschrieben, kompilieren und registrieren, verwenden Sie sie wie jede generische Schnittstelle. Bei verteiltem COM stehen Schnittstellenmethoden sowohl für Remoteprozesse als auch für andere Prozesse auf demselben Computer zur Verfügung.

Schließlich erfordert das Erstellen von COM-Schnittstellen eine Entwicklungsumgebung, die einen C/C++-Compiler und den Midl.exe Compiler enthält.

Die Schritte zum Erstellen einer COM-Schnittstelle sind wie folgt:

  • Entscheiden Sie, wie Sie Marshallingunterstützung für Ihre Schnittstelle bereitstellen möchten. entweder mit typbibliothekgesteuertem Marshalling oder mit einer Proxy-/Stub-DLL. Auch Prozessinterne Schnittstellen müssen gemarshallt werden, wenn sie über Wohnungsgrenzen hinweg verwendet werden sollen. Es ist eine gute Idee, Marshallingunterstützung für jede COM-Schnittstelle zu erstellen, auch wenn Sie glauben, dass Sie sie nicht benötigen werden. Weitere Informationen finden Sie unter Interface Marshalling .
  • Beschreiben sie die Schnittstelle oder Schnittstellen in einer IDL-Datei (Interface Definition). Darüber hinaus können Sie bestimmte lokale Aspekte Ihrer Schnittstelle in einer Anwendungskonfigurationsdatei (Application Configuration File, ACF) angeben. Wenn Sie das typbibliotheksgesteuerte Marshalling verwenden, fügen Sie eine Bibliotheksanweisung hinzu, die auf die Schnittstellen verweist, für die Sie Typinformationen generieren möchten.
  • Verwenden Sie den MIDL-Compiler, um eine Typbibliotheksdatei und eine Headerdatei oder Proxy-/Stubdateien in C-Sprache, Schnittstellenbezeichnerdatei, DLL-Datendatei und Headerdatei zu generieren. Weitere Informationen finden Sie unter MIDL-Kompilierung .
  • Schreiben Sie abhängig von der ausgewählten Marshallingmethode eine DEF-Datei (Module Definition), kompilieren und verknüpfen Sie alle von MIDL generierten Dateien in einer einzelnen Proxy-DLL, und registrieren Sie die Schnittstelle in der Systemregistrierung, oder registrieren Sie die Typbibliothek. Weitere Informationen finden Sie unter Laden und Registrieren einer Typbibliothekund Erstellen und Registrieren einer Proxy-DLL .

Aufbau einer IDL-Datei

COM-Clients und -Server

Schnittstellenentwurfsregeln

Das Component Object Model