Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Pengembang minidriver streaming memiliki opsi untuk memungkinkan driver kelas menangani sinkronisasi. Ketika minidriver mendaftarkan diri dengan driver kelas, mereka dapat memilih untuk menggunakan sinkronisasi yang disediakan oleh driver kelas dengan mengatur anggota TurnOffSynchronization pada HW_INITIALIZATION_DATA menjadi FALSE.
Ketika driver kelas menangani sinkronisasi, itu memastikan bahwa dua bagian kode minidriver tidak pernah dijalankan secara bersamaan. Driver kelas mengantrekan semua permintaan aliran data, dan meneruskannya ke minidriver satu per satu.
Salah satu tujuan sinkronisasi ini adalah untuk menghindarkan penulis minidriver dari harus berurusan dengan semua detail sinkronisasi driver dan penanganan antrean permintaan dalam lingkungan multitasking, reentrant, multiprocessor. Namun, beberapa minidriver tidak boleh menggunakannya. Dua contoh disediakan dalam topik Contoh Sinkronisasi yang menggambarkan apa yang perlu dilakukan minidriver mengenai sinkronisasi.
Menonaktifkan sinkronisasi kelas streaming berarti bahwa semua permintaan segera dan secara asinkron dipanggil ke minidriver dalam konteks pengiriman utas di PASSIVE_LEVEL. Pengecualian untuk aturan sebelumnya adalah rutinitas HwCancelPacket, TimeoutHandler, dan Timer. Ini dipanggil pada DISPATCH_LEVEL. Pengecualian akhir adalah handler interupsi, yang disebut di DIRQL.
Ketika sinkronisasi nonaktif, minidriver bertanggung jawab untuk melakukan sinkronisasi sesuai dengan model WDM. Jika minidriver dipanggil kembali di PASSIVE_LEVEL, itu kemudian dapat dipreempti oleh peristiwa IRQL yang lebih tinggi seperti DPC atau interupsi. Demikian pula, jika minidriver dipanggil kembali di DISPATCH_LEVEL, itu kemudian dapat didahului oleh interupsi. Fungsi minidriver yang memanipulasi sumber daya bersama harus menyinkronkan akses.
Beberapa permintaan dapat dikeluarkan secara bersamaan ke aliran yang sama atau berbeda saat sinkronisasi kelas streaming nonaktif. Minidriver harus mengantrekan permintaannya sendiri dan menangani sinkronisasi perangkat keras apa pun dengan utas lain dan ISR. Kunci putar, mutex, dan KeSynchronizeExecution adalah beberapa objek sinkronisasi yang tersedia untuk minidriver streaming yang berjalan tanpa sinkronisasi kelas stream.