Mutex Perangkat di AVStream
Gunakan mutex perangkat untuk menyinkronkan objek dalam hierarki dari perangkat ke filter. Setiap perangkat AVStream memiliki satu mutex perangkat terkait. Pembuatan dan penghancuran pabrik filter dan filter disinkronkan dengan mutex ini. Operasi Plug and Play dan manajemen daya tertentu juga disinkronkan dengan mutex ini. Minidriver berfokus pada dua masalah utama sehubungan dengan mutex perangkat.
Hierarki objek dijamin stabil hanya dari perangkat ke filter individual jika mutex perangkat ditahan. Akibatnya, minidriver harus mendapatkan mutex perangkat sebelum membuat pabrik filter secara manual dengan memanggil KsCreateFilterFactory. Minidriver juga harus mendapatkan mutex perangkat sebelum melintasi hierarki objek dengan memanggil fungsi KsXxxGetFirstChildXxx dan KsXxxGetNextSiblingXxx .
AVStream memegang mutex perangkat atas nama minidriver saat menerima permintaan berikut:
Pemberitahuan tidur dan bangun pada filter dan pin. Lihat KsFilterRegisterPowerCallbacks dan KsPinRegisterPowerCallbacks.
Penting untuk dicatat bahwa mutex perangkat tidak dapat diperoleh secara rekursif. Pertimbangkan contoh berikut. AVStream menerima pemberitahuan tidur. Seperti yang dijelaskan di atas, dibutuhkan mutex perangkat atas nama minidriver. Jika AVStream kemudian memanggil rutinitas panggilan balik yang disediakan minidriver dalam konteks utas A, minidriver tidak boleh mencoba mendapatkan mutex perangkat di utas A. Melakukannya menyebabkan utas A mengalami kebuntuan dengan sendirinya.
AVStream sering mendapatkan mutex kontrol filter saat mutex perangkat sudah ditahan. Akibatnya, sebagai aturan umum, utas yang telah mengambil mutex kontrol filter kemudian tidak boleh mengambil mutex perangkat.
Untuk memanipulasi mutex perangkat, gunakan fungsi berikut:
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk