Bagikan melalui


Cara Menerapkan IUnknown

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Pengambilan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine , dan Pengambilan Audio/Video di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Microsoft DirectShow didasarkan pada Model Objek Komponen (COM). Jika Anda menulis filter Anda sendiri, Anda harus menerapkannya sebagai objek COM. Kelas dasar DirectShow menyediakan kerangka kerja untuk melakukan ini. Menggunakan kelas dasar tidak diperlukan, tetapi dapat menyederhanakan proses pengembangan. Artikel ini menjelaskan beberapa detail internal objek COM dan implementasinya di kelas dasar DirectShow.

Artikel ini mengasumsikan bahwa Anda tahu cara memprogram aplikasi klien COM—dengan kata lain, bahwa Anda memahami metode di IUnknown—tetapi tidak mengasumsikan pengalaman sebelumnya dalam mengembangkan objek COM. DirectShow menangani banyak detail pengembangan objek COM. Jika Anda memiliki pengalaman mengembangkan objek COM, Anda harus membaca bagian Menggunakan CUnknown, yang menjelaskan kelas dasar CUnknown .

COM adalah spesifikasi, bukan implementasi. Ini mendefinisikan aturan yang harus diikuti komponen; menerapkan aturan tersebut diserahkan kepada pengembang. Di DirectShow, semua objek berasal dari satu set kelas dasar C++. Konstruktor dan metode kelas dasar melakukan sebagian besar pekerjaan "pembukuan" COM, seperti menjaga jumlah referensi yang konsisten. Dengan mengambil filter dari kelas dasar, Anda mewarisi fungsionalitas kelas . Untuk menggunakan kelas dasar secara efektif, Anda memerlukan pemahaman umum tentang bagaimana mereka menerapkan spesifikasi COM.

Artikel ini berisi topik berikut.

DirectShow dan COM