Udostępnij przez


Jak zaimplementować IUnknown

[Funkcja skojarzona z tą stroną, DirectShow, jest starszą funkcją. Został zastąpiony przez MediaPlayer, IMFMediaEnginei Audio/Video Capture w Media Foundation. Te funkcje zostały zoptymalizowane pod kątem systemów Windows 10 i Windows 11. Firma Microsoft zdecydowanie zaleca, aby nowy kod używał MediaPlayer, IMFMediaEngine i Audio/Video Capture w programie Media Foundation zamiast DirectShow, jeśli to możliwe. Firma Microsoft sugeruje, że istniejący kod, który używa starszych interfejsów API, należy przepisać go do korzystania z nowych interfejsów API, jeśli to możliwe.]

Program Microsoft DirectShow jest oparty na modelu obiektów składników (COM). Jeśli piszesz własny filtr, musisz zaimplementować go jako obiekt COM. Klasy podstawowe DirectShow zapewniają strukturę, z której należy to zrobić. Używanie klas bazowych nie jest wymagane, ale może uprościć proces programowania. W tym artykule opisano niektóre wewnętrzne szczegóły obiektów COM i ich implementację w klasach bazowych DirectShow.

W tym artykule założono, że wiesz, jak programować aplikacje klienckie COM — innymi słowy, rozumiesz metody w IUnknown— ale nie zakłada się wcześniejszego doświadczenia w tworzeniu obiektów COM. DirectShow obsługuje wiele szczegółów tworzenia obiektu COM. Jeśli masz doświadczenie w tworzeniu obiektów COM, przeczytaj sekcję Using CUnknown, która opisuje klasę bazową CUnknownCUnknown.

COM jest specyfikacją, a nie implementacją. Definiuje reguły, które musi przestrzegać składnik; wprowadzenie tych reguł jest pozostawione deweloperowi. W programie DirectShow wszystkie obiekty pochodzą z zestawu klas bazowych języka C++. Konstruktory i metody klasy bazowej wykonują większość pracy administracyjnej COM, takich jak utrzymywanie spójnej liczby referencji. Wyprowadzając filtr z klasy bazowej, dziedziczysz funkcjonalność klasy . Aby efektywnie korzystać z klas bazowych, potrzebujesz ogólnego zrozumienia sposobu implementacji specyfikacji COM.

Ten artykuł zawiera następujące tematy.

DirectShow i COM