Megosztás a következőn keresztül:


Az IUnknown implementálása

[A laphoz társított funkció, DirectShowegy régi funkció. A MediaPlayer, a IMFMediaEngineés a Audio/Video Capture a Media Foundationbenmost már felváltotta. Ezek a funkciók Windows 10-hez és Windows 11-hez lettek optimalizálva. A Microsoft határozottan javasolja, hogy az új kód, amikor csak lehetséges, a MediaPlayer-t, a IMFMediaEngine-at, és a Audio- és videórögzítést a Media Foundation-ben használja a DirectShowhelyett. A Microsoft javasolja, hogy az örökölt API-kat használó meglévő kódot át kell írni az új API-k használatára, ha lehetséges.]

A Microsoft DirectShow a Komponens Objektum Modellre (COM) épül. Ha saját szűrőt ír, COM-objektumként kell implementálnia. A DirectShow alaposztályai olyan keretrendszert biztosítanak, amelyből ezt megteheti. Az alaposztályok használata nem kötelező, de egyszerűsítheti a fejlesztési folyamatot. Ez a cikk a COM-objektumok belső részleteit és azok DirectShow alaposztályokban való megvalósítását ismerteti.

Ez a cikk feltételezi, hogy tudja, hogyan programozza a COM-ügyfélalkalmazásokat – más szóval, hogy ismeri az IUnknownmetódusait –, de nem feltételez semmilyen korábbi tapasztalatot a COM-objektumok fejlesztésében. A DirectShow a COM-objektumok fejlesztésének számos részletét kezeli. Ha rendelkezik COM-objektumok fejlesztésével, olvassa el a CUnknownhasználata című szakaszt, amely a CUnknown alaposztályt ismerteti.

A COM egy specifikáció, nem implementáció. Meghatározza azokat a szabályokat, amelyeket egy összetevőnek követnie kell; a szabályok érvénybe léptetése a fejlesztőre marad. A DirectShow-ban minden objektum C++ alaposztályokból származik. Az alaposztály konstruktorai és metódusai végzik a COM "könyvelési" munkáinak nagy részét, például a konzisztens referencia szám fenntartását. Ha a szűrőt egy alaposztályból származtatja, örökli az osztály funkcióit. Az alaposztályok hatékony használatához általános ismeretekre van szükség a COM-specifikáció implementálásának módjáról.

Ez a cikk az alábbi témaköröket tartalmazza.

DirectShow és COM