Bagikan melalui


Mengunci dan Membuka Kunci Penunjuk Aliran

Setiap penunjuk aliran mempertahankan status kunci: terkunci atau tidak terkunci.

Penunjuk aliran terkunci dijamin akan mereferensikan data dalam antrean. Bingkai data yang ditunjukkan oleh penunjuk aliran terkunci tidak dapat dibatalkan. Dengan demikian, minidriver harus meminimalkan waktu yang mereka habiskan untuk memegang penunjuk aliran terkunci.

Penunjuk stream yang tidak terkunci tidak dijamin untuk mengacu pada bingkai data dalam antrean. Dengan menahan pointer stream yang tidak terkunci, minidriver dapat mempertahankan pointer data, tetapi tetap memungkinkan frame dibatalkan.

Data yang ditunjukkan oleh penunjuk aliran yang tidak terkunci dapat diakses. Jika rutinitas CancelCallback yang Anda berikan di KsStreamPointerClone memanggil KsStreamPointerDelete, Anda harus menyinkronkan CancelCallback dan akses data apa pun yang dilakukannya. Minidriver harus memastikan bahwa rutinitas panggilan balik pembatalan tidak menghapus penunjuk aliran saat utas lain menggunakannya.

Jika rutinitas panggilan balik pembatalan tidak memanggil KsStreamPointerDelete, sinkronisasi mungkin tidak diperlukan.

Untuk mengunci penunjuk aliran, panggil KsStreamPointerLock. Untuk membuka kunci penunjuk aliran, panggil KsStreamPointerUnlock.

Ketika IRP dibatalkan, AVStream memanggil panggilan balik pembatalan untuk semua penunjuk aliran yang tidak terkunci yang menunjuk ke bingkai dalam IRP.

Buka kunci penunjuk aliran tepi di depan dan di belakang hanya saat tidak digunakan.