Delen via


Hoe IUnknown te implementeren

[De functie die is gekoppeld aan deze pagina, DirectShow, is een verouderde functie. Het is vervangen door MediaPlayer, IMFMediaEngineen Audio/Video Capture in Media Foundation. Deze functies zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan om nieuwe code te gebruiken MediaPlayer, IMFMediaEngine en Audio/Video Capture in Media Foundation in plaats van DirectShow, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]

Microsoft DirectShow is gebaseerd op het Component Object Model (COM). Als u uw eigen filter schrijft, moet u het als com-object implementeren. De DirectShow-basisklassen bieden een framework waaruit u dit kunt doen. Het gebruik van de basisklassen is niet vereist, maar kan het ontwikkelingsproces vereenvoudigen. In dit artikel worden enkele interne details van COM-objecten en hun implementatie in de DirectShow-basisklassen beschreven.

In dit artikel wordt ervan uitgegaan dat u weet hoe u COM-clienttoepassingen kunt programmeren, met andere woorden, dat u de methoden in IUnknown-begrijpt, maar niet uitgaat van eerdere ervaring met het ontwikkelen van COM-objecten. DirectShow verwerkt veel van de details van het ontwikkelen van een COM-object. Als u ervaring hebt met het ontwikkelen van COM-objecten, leest u de sectie CUnknowngebruiken, waarin de CUnknown basisklasse wordt beschreven.

COM is een specificatie, geen implementatie. Het definieert de regels die een onderdeel moet volgen; het in werking stellen van deze regels wordt overgelaten aan de ontwikkelaar. In DirectShow zijn alle objecten afgeleid van een set C++-basisklassen. De constructors en methoden van de basisklasse verzorgen het meeste van het COM-boekhoudwerk, zoals het handhaven van een consistent aantal referenties. Door uw filter af te leiden van een basisklasse, neemt u de functionaliteit van de klasse over. Als u basisklassen effectief wilt gebruiken, hebt u een algemeen begrip nodig van hoe ze de COM-specificatie implementeren.

Dit artikel bevat de volgende onderwerpen.

DirectShow en COM