Objek Aktivasi
Objek aktivasi adalah objek pembantu yang digunakan untuk membuat objek lain, agak mirip dengan pabrik kelas. Objek aktivasi mengekspos antarmuka IMFActivate .
Objek aktivasi memungkinkan Anda menunggak pembuatan objek target, karena Anda dapat menahan penunjuk IMFActivate tanpa membuat objek target. Objek aktivasi juga dapat diserialisasikan, dan dengan demikian digunakan untuk membuat objek target dalam proses lain. Misalnya, objek aktivasi digunakan untuk marshal komponen alur dari proses aplikasi ke proses jalur media terlindungi (PMP). Objek aktivasi juga digunakan oleh fungsi enumerasi tertentu yang mengembalikan daftar penunjuk IMFActivate . Sebelum aplikasi membuat objek target, aplikasi bisa mendapatkan informasi tentang objek dengan memeriksa atribut pada objek aktivasi.
Untuk membuat objek target dari objek aktivasi, panggil metode IMFActivate::ActivateObject . Pemanggil harus memanggil IMFActivate::ShutdownObject ketika selesai menggunakan objek yang dibuat. Seringkali aplikasi membuat objek aktivasi, dan Sesi Media memanggil ActivateObject. Dalam hal ini, Sesi Media, bukan aplikasi, harus memanggil ShutdownObject. Dalam situasi lain, aplikasi menerima penunjuk IMFActivate dari Sesi Media, dan aplikasi memanggil ActivateObject dan ShutdownObject. (Misalnya, lihat Cara Memutar File Media yang Dilindungi.)
Objek aktivasi dapat memiliki atribut, dan antarmuka IMFActivate mewarisi antarmuka IMFAttributes . Beberapa objek aktivasi menggunakan atribut untuk mengonfigurasi objek yang dibuat. Atribut tertentu yang didukung oleh setiap objek didokumenkan dalam referensi untuk fungsi pembuatan objek aktivasi tersebut. Atur atribut menggunakan penunjuk IMFActivate yang Anda terima dari fungsi .
Untuk pemutaran yang dilindungi, objek aktivasi di-marshalasikan ke proses PMP. Untuk mendukung marshaling, objek aktivasi harus mengekspos antarmuka IPersistStream . Selain itu, objek aktivasi dan objek yang dibuat harus menjadi komponen tepercaya jika PMP berjalan dalam proses yang dilindungi. Ini bukan persyaratan ketika PMP dimuat dalam proses yang tidak terlindungi.
Untuk menggunakan objek alur kustom (seperti sink media) di dalam proses PMP, Anda harus menerapkan objek aktivasi untuk objek alur Anda:
- Objek aktivasi harus mengekspos IMFActivate dan IPersistStream.
- Metode IPersist::GetClassID objek aktivasi harus mengembalikan CLSID objek aktivasi.
- Secara opsional, Anda dapat mengimplementasikan metode IPersistStream::Save dan IPersistStream::Load untuk marshal data apa pun yang Anda butuhkan untuk mengonfigurasi objek aktivasi Anda.
Ketika Sesi Media memuat topologi di dalam proses PMP, Sesi Media memanggil CoCreateInstance untuk membuat instans baru objek aktivasi Anda. Kemudian memanggil IMFActivate::ActivateObject untuk membuat objek alur.
Topik terkait