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.
Driver Windows Driver Frameworks (WDF) yang mengelola interupsi perangkat keras harus membuat objek interupsi kerangka untuk setiap interupsi yang didukung setiap perangkat. Dalam kerangka kerja versi 1.11 dan yang lebih baru yang berjalan pada Windows 8 atau versi yang lebih baru dari sistem operasi, driver Kernel-Mode Driver Framework (KMDF) dan User-Mode Driver Framework (UMDF) dapat membuat objek interupsi yang memerlukan penanganan tingkat pasif. Kecuali jika Anda menulis driver untuk platform System on a Chip (SoC), driver Anda harus menggunakan objek interupsi DIRQL.
Driver biasanya membuat objek interupsi kerangka kerja dalam fungsi panggilan balik EvtDriverDeviceAdd. Driver juga dapat membuat objek interupsi dari panggilan balik fungsinya, yaitu EvtDevicePrepareHardware.
Kerangka kerja memanggil fungsi panggilan balik EvtDriverDeviceAdd driver sebelum manajer Plug and Play (PnP) menetapkan sumber daya sistem, seperti vektor interupsi, ke perangkat. Setelah manajer PnP menetapkan sumber daya, kerangka kerja menyimpan sumber daya interupsi di objek interupsi perangkat. (Driver yang tidak mendukung Plug and Play tidak dapat menggunakan objek interupsi.)
Untuk membuat objek interrupt kerangka, driver Anda harus menginisialisasi struktur WDF_INTERRUPT_CONFIG dan meneruskannya ke metode WdfInterruptCreate.
UMDF mendukung jenis gangguan berikut:
- Pemicu berdasarkan tingkat (bersama atau eksklusif)
- Pemicu berbasis tepi (hanya eksklusif)
- MSI (eksklusif menurut definisi)
Nota UMDF tidak mendukung interupsi yang dipicu tepi bersama (shared edge-triggered interrupts).
Mulai dari UMDF versi 2.15, UMDF mendukung interupsi untuk perangkat sederhana seperti tombol tekan perangkat keras, biasanya didukung oleh pin GPIO, yang tidak dapat diaktifkan atau dinonaktifkan secara langsung dengan menggunakan register perangkat keras. Untuk mendukung perangkat tersebut, driver UMDF harus menggunakan penghentian eksklusif yang dipicu oleh tepi.
Mulai dari KMDF versi 1.15, KMDF juga mendukung interupsi untuk perangkat seperti itu, tanpa solusi sementara yang dijelaskan dalam Penanganan Active-Both Interupsi.
Juga di WDF_INTERRUPT_CONFIG, driver Anda menyediakan pointer ke fungsi callback berikut yang disediakan oleh driver:
EvtInterruptEnable
Mengaktifkan interupsi perangkat keras.
EvtInterruptDisable
Menonaktifkan interupsi perangkat keras.
EvtInterruptIsr
Rutin Layanan Interupsi (ISR) untuk interupsi.
EvtInterruptDpc
Panggilan prosedur yang ditangguhkan (DPC) untuk interupsi.
EvtInterruptWorkItem
Tugas untuk interupsi tingkat pasif.
Untuk driver yang menggunakan kerangka kerja versi 1.11 atau yang lebih baru pada Windows 8 atau versi yang lebih baru dari sistem operasi, driver dapat secara eksplisit mengatur induk objek interupsi kerangka kerja (DIRQL atau pasif) ke objek perangkat kerangka kerja atau objek antrean kerangka kerja. Jika driver menentukan objek induk, driver harus mengatur anggota AutomaticSerialization dari struktur WDF_INTERRUPT_CONFIG objek interupsi menjadi TRUE. (Ingat bahwa jika AutomaticSerialization adalah TRUE, kerangka kerja menyinkronkan eksekusi fungsi panggilan balik objek interupsi EvtInterruptDpc atau EvtInterruptWorkItem dengan fungsi panggilan balik dari objek lain yang berada di bawah objek induk interupsi tersebut.)
Sebagai contoh, seorang driver mungkin menentukan antrean sebagai induk dari sebuah interupsi untuk menyinkronkan panggilan balik antrean tersebut dengan panggilan balik EvtInterruptDpc atau EvtInterruptWorkItem dari interupsi tersebut. Dalam konfigurasi ini, kerangka kerja menghapus objek antrean saat menghapus objek perangkat.
Setelah memanggil WdfInterruptCreate, driver dapat memilih untuk memanggil WdfInterruptSetPolicy atau WdfInterruptSetExtendedPolicy untuk menentukan parameter interupsi tambahan. Biasanya driver memanggil metode ini dari fungsi panggilan balik EvtDriverDeviceAdd.
Kerangka kerja secara otomatis menghapus interupsi sebelum menghapus induk interupsi. Driver tidak boleh memanggil WdfObjectDelete untuk menghapus interupsi pada waktu sebelumnya.
Mendukung interupsi yang dipicu oleh sinyal pesan
Windows Vista dan versi yang lebih baru mendukung interupsi berorientasi pesan (MSI). Untuk mengaktifkan sistem operasi guna mendukung MSI untuk perangkat Anda, file INF driver Anda harus mengatur beberapa nilai dalam registri. Untuk informasi tentang cara mengatur nilai-nilai ini, lihat Mengaktifkan Interupsi Message-Signaled pada Registri.
Driver Anda harus membuat objek interupsi kerangka kerja untuk setiap vektor interupsi atau pesan MSI yang didukung perangkat. Jika manajer PnP tidak memberikan perangkat semua sumber daya interupsi yang didukung perangkat, driver tidak menggunakan objek interupsi tambahan dan tidak memanggil fungsi panggilan balik mereka.
Di Windows 7, sistem operasi tidak mendukung permintaan sumber daya untuk lebih dari 910 pesan interupsi per fungsi perangkat. Di Windows 8, sistem operasi tidak mendukung permintaan sumber daya untuk lebih dari 2.048 gangguan per fungsi perangkat.
Jika driver perangkat melebihi batas ini, perangkat mungkin gagal dimulai. Untuk beroperasi di komputer yang berisi banyak prosesor logis, driver tidak boleh meminta lebih dari satu interupsi per prosesor.
Driver harus mentolerir penyeimbangan ulang sistem sumber daya interupsi tanpa kegagalan, di mana manajer PnP menetapkan sekumpulan sumber daya interupsi alternatif kepada perangkat dari daftar persyaratan sumber daya. Misalnya, perangkat mungkin diberi jumlah interupsi pesan yang lebih kecil daripada yang diminta driver. Dalam kasus terburuk, driver harus siap untuk mengoperasikan perangkat hanya dengan satu interupsi berbasis lini.