Bagikan melalui


isr Passive-Level

Dimulai dengan Windows 8, driver kerangka kerja driver mode kernel (KMDF) dan driver framework mode pengguna (UMDF) dapat, sebagai opsi, mendaftarkan rutinitas layanan interupsi (ISR) mereka untuk berjalan pada tingkat pasif.

Untuk informasi selengkapnya tentang ISR tingkat pasif untuk driver KMDF dan UMDF, lihat topik berikut:

Jika perangkat periferal menggunakan pin I/O tujuan umum (GPIO) untuk menyampaikan permintaan interupsi ke prosesor, abstraksi gangguan Windows dengan mudah memungkinkan driver untuk perangkat ini mengabaikan detail khusus perangkat keras pengontrol GPIO tempat pin ini berada. Ketika handler perangkap kernel berjalan sebagai respons terhadap permintaan interupsi yang disampaikan GPIO dari perangkat, handler ini secara otomatis menghapus atau menutupi, sesuai kebutuhan, gangguan dalam pendaftaran perangkat keras GPIO. Selain itu, penghandel perangkap kernel secara langsung memanggil ISR perangkat, atau menjadwalkan ISR ini untuk berjalan di utas lain.

Sering kali, register perangkat keras GPIO dipetakan memori, dalam hal ini handler trap kernel dapat langsung mengaksesnya di DIRQL. Namun, pendaftaran perangkat keras dari perangkat periferal mungkin tidak dipetakan memori, dalam hal ini, driver perangkat periferal harus menggunakan permintaan I/O untuk mengaksesnya. Jika demikian, ISR untuk driver perangkat periferal harus berjalan pada IRQL = PASSIVE_LEVEL sehingga dapat menggunakan permintaan I/O untuk membungkam gangguan atau untuk melakukan layanan awal interupsi. ISR tingkat pasif dapat mengirim permintaan I/O secara sinkron dan, jika perlu, blokir hingga permintaan selesai.

Untuk mendukung ISR tingkat pasif untuk perangkat periferal yang menghasilkan sinyal permintaan interupsi yang dipicu tepi, penghandel perangkap kernel menghapus gangguan yang tertunda pada pin GPIO, lalu menjadwalkan ISR untuk berjalan dalam utas kernel tingkat pasif.

Untuk mendukung ISR tingkat pasif untuk perangkat periferal yang menghasilkan sinyal permintaan interupsi yang dipicu tingkat, handler perangkap kernel menutupi gangguan yang tertunda pada pin GPIO, lalu menjadwalkan ISR untuk berjalan dalam utas kernel tingkat pasif. ISR bertanggung jawab untuk menghapus permintaan interupsi di perangkat periferal. Setelah ISR kembali, utas kernel membuka kemasan interupsi pada pin GPIO.

Karena gangguan tetap ditutupi sampai ISR kembali, ISR tingkat pasif perangkat hanya boleh melakukan layanan awal gangguan, dan kemudian kembali untuk menghindari penundaan ISR tingkat pasif untuk perangkat lain. Biasanya, driver harus menunda pemrosesan terkait interupsi tambahan ke utas pekerja interupsi, yang berjalan pada prioritas yang lebih rendah daripada ISR.