Så här implementerar du IUnknown
[Funktionen som är associerad med den här sidan, DirectShow, är en äldre funktion. Det har ersatts av MediaPlayer, IMFMediaEngineoch Audio / Video Capture i Media Foundation. Dessa funktioner har optimerats för Windows 10 och Windows 11. Microsoft rekommenderar starkt att ny kod använder MediaPlayer, IMFMediaEngine och Audio/Video Capture i Media Foundation i stället för DirectShow, när det är möjligt. Microsoft föreslår att befintlig kod som använder äldre API:er skrivs om för att använda de nya API:erna om möjligt.]
Microsoft DirectShow baseras på komponentobjektmodellen (COM). Om du skriver ett eget filter måste du implementera det som ett COM-objekt. DirectShow-basklasserna tillhandahåller ett ramverk som du kan göra detta från. Det krävs inte att du använder basklasserna, men det kan förenkla utvecklingsprocessen. Den här artikeln beskriver några av de interna detaljerna för COM-objekt och deras implementering i DirectShow-basklasserna.
Den här artikeln förutsätter att du vet hur du programmerar COM-klientprogram – med andra ord att du förstår metoderna i IUnknown– men inte förutsätter någon tidigare erfarenhet av att utveckla COM-objekt. DirectShow hanterar många av detaljerna för att utveckla ett COM-objekt. Om du har erfarenhet av att utveckla COM-objekt bör du läsa avsnittet Using CUnknown, som beskriver CUnknown basklass.
COM är en specifikation, inte en implementering. Den definierar de regler som en komponent måste följa; att dessa regler träder i kraft lämnas till utvecklaren. I DirectShow härleds alla objekt från en uppsättning C++-basklasser. Basklasskonstruktorerna och metoderna utför det mesta av COM:s "bokföringsarbete", till exempel att hålla ett konsekvent referensantal. Genom att härleda filtret från en basklass ärver du klassens funktioner. Om du vill använda basklasser effektivt behöver du en allmän förståelse för hur de implementerar COM-specifikationen.
Den här artikeln innehåller följande avsnitt.
Relaterade ämnen