Filter Control Mutex pada AVStream

Setiap instans filter AVStream memiliki mutex yang terkait dengan kontrol filter. Mutex ini digunakan untuk menyinkronkan akses ke hierarki objek mulai dari filter hingga ke pin-pin individual. Pembuatan dan penghancuran filter dan pin disinkronkan dengan mutex ini.

Hierarki objek dijamin stabil hanya dari instans filter tertentu ke bawah saat mutex kontrol filter ditahan. Oleh karena itu, minidriver harus mendapatkan mutex kontrol filter sebelum melintasi hierarki objek di bawah level filter menggunakan fungsi KsXxxGetFirstChildXxx dan KsXxxGetNextSiblingXxx.

Mutex kontrol filter juga digunakan untuk menyinkronkan transisi status.

AVStream mendapatkan mutex kontrol filter saat menangani properti yang mengharuskan hierarki tetap stabil, seperti saat melakukan modifikasi deskriptor.

Ketahuilah bahwa satu mutex kendali filter digunakan untuk hierarki objek di bawah masing-masing filter individual. Ini berarti bahwa objek pin menggunakan mutex kontrol filter induknya saat minidriver memanggil fungsi dengan objek pin.

AVStream memegang mutex kontrol filter atas nama pengandar mini saat memanggil fungsi yang disediakan oleh pengandar mini berikut:

Mirip dengan mutex perangkat, mutex kontrol filter tidak boleh diperoleh secara rekursif. Jika, misalnya, AVStream melakukan panggilan balik ke minidriver untuk Create dispatch dalam konteks utas A, dan kemudian minidriver mencoba untuk mendapatkan mutex dari dalam utas A, utas tersebut mengalami kebuntuan dengan dirinya sendiri.

Kebuntuan dapat terjadi jika Anda melakukan salah satu tindakan berikut:

  • Cobalah untuk memperoleh mutex kontrol filter dari dalam rutinitas proses.

  • Cobalah untuk mendapatkan mutex kontrol filter dari dalam panggilan balik Tidur atau Bangun.

Untuk memanipulasi mutex kontrol filter, gunakan fungsi berikut:

KsAcquireControl, KsFilterAcquireControl, KsPinAcquireControl, KsReleaseControl, KsFilterReleaseControl, KsPinReleaseControl