Freigeben über


Implementieren von IUnknown

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Microsoft DirectShow basiert auf dem Component Object Model (COM). Wenn Sie einen eigenen Filter schreiben, müssen Sie ihn als COM-Objekt implementieren. Die DirectShow-Basisklassen bieten ein Framework, von dem aus dies geschieht. Die Verwendung der Basisklassen ist nicht erforderlich, kann jedoch den Entwicklungsprozess vereinfachen. In diesem Artikel werden einige der internen Details von COM-Objekten und deren Implementierung in den DirectShow-Basisklassen beschrieben.

In diesem Artikel wird davon ausgegangen, dass Sie wissen, wie COM-Clientanwendungen zu programmieren sind, d. h. dass Sie die Methoden in IUnknown verstehen, aber keine vorherige Erfahrung beim Entwickeln von COM-Objekten vorausgesetzt. DirectShow verarbeitet viele Details der Entwicklung eines COM-Objekts. Wenn Sie Erfahrung beim Entwickeln von COM-Objekten haben, sollten Sie den Abschnitt Using CUnknown (Verwenden von CUnknown) lesen, in dem die CUnknown-Basisklasse beschrieben wird.

COM ist eine Spezifikation, keine Implementierung. Es definiert die Regeln, die eine Komponente befolgen muss. Die Umsetzung dieser Regeln bleibt dem Entwickler überlassen. In DirectShow werden alle Objekte von einer Gruppe von C++-Basisklassen abgeleitet. Die Konstruktoren und Methoden der Basisklasse erledigen die meisten COM-Buchhaltungsarbeiten, z. B. die Beibehaltung einer konsistenten Verweisanzahl. Indem Sie Ihren Filter von einer Basisklasse ableiten, erben Sie die Funktionalität der -Klasse. Um Basisklassen effektiv verwenden zu können, benötigen Sie ein allgemeines Verständnis der Implementierung der COM-Spezifikation.

Dieser Artikel enthält die folgenden Themen.

DirectShow und COM