Bagikan melalui


Memproses Mutex di AVStream

Mutex ketiga adalah mutex pemrosesan. Filter dan pin individual memiliki mutex pemrosesannya sendiri. AVStream secara independen memperoleh mutex pemrosesan sebelum memproses pada level filter dan pin, untuk menyinkronkan akses ke struktur yang terkait dengan pemrosesan. AVStream juga memperoleh mutex pemrosesan selama operasi lain termasuk mengaitkan pin ke bagian pipa, operasi daya tidur atau bangun, dan perubahan deskriptor. Minidriver dapat memperoleh mutex secara manual untuk melakukan operasi sinkron, seperti pemrosesan atau modifikasi deskriptor. Minidriver harus mendapatkan mutex pemrosesan sebelum membuat perubahan apa pun yang tidak dapat terjadi pada saat yang sama dengan pemrosesan.

Seperti halnya dua jenis mutex lainnya, mutex pemrosesan tidak diperoleh secara rekursif. Ini berarti bahwa jika minidriver mencoba mengambil muteks pemrosesan selama proses berlangsung, terjadi kebuntuan.

Jangan gunakan mutex pemrosesan untuk menangguhkan pemrosesan untuk jangka waktu yang lama. Sebagai gantinya, manipulasi gerbang kontrol pemrosesan secara langsung dengan menggunakan fungsi KSGATEXxx .

Utas yang telah memperoleh mutex pemrosesan tidak boleh kemudian mencoba memperoleh mutex kontrol filter.

Untuk memanipulasi muteks pemrosesan, gunakan fungsi berikut:

KsFilterAcquireProcessingMutex, KsPinAcquireProcessingMutex, KsFilterReleaseProcessingMutex, KsPinReleaseProcessingMutex