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.
Interupsi yang dipicu oleh pesan (MSI) diperkenalkan dalam spesifikasi PCI 2.2 sebagai alternatif untuk interupsi berbasis jalur. Alih-alih menggunakan pin khusus untuk memicu gangguan, perangkat yang menggunakan MSI memicu gangguan dengan menulis nilai ke alamat memori tertentu. PCI 3.0 mendefinisikan bentuk MSI yang diperluas, yang disebut MSI-X, yang memungkinkan kemampuan pemrograman yang lebih besar. Satu perangkat dapat mendukung MSI dan MSI-X. Untuk perangkat seperti itu, sistem operasi akan secara otomatis menggunakan MSI-X.
Pesan interupsi adalah nilai tertentu yang ditulis perangkat ke alamat tertentu untuk memicu interupsi. Tidak seperti interupsi berbasis baris, interupsi yang disinyalir pesan memiliki semantik tepi. Perangkat mengirim pesan tetapi tidak menerima pengakuan perangkat keras bahwa interupsi diterima.
Untuk PCI 2.2, pesan terdiri dari alamat dan nilai 16-bit yang sebagian buram. Setiap perangkat diberi satu alamat. Untuk mengirim beberapa pesan, perangkat dapat menggunakan 4 bit yang lebih rendah dari nilai pesan untuk membedakan pesan. Oleh karena itu, untuk PCI 2.2, perangkat dapat mendukung hingga 16 pesan.
Untuk PCI 3.0, pesan terdiri dari alamat dan nilai buram 32-bit. Setiap pesan yang berbeda memiliki alamat uniknya sendiri. Tidak seperti untuk PCI 2.2, perangkat tidak memodifikasi nilai. Untuk PCI 3.0, perangkat dapat mendukung hingga 2.048 pesan yang berbeda. Perangkat yang mendukung PCI 3.0 MSI-X menampilkan tabel perangkat keras yang dapat diprogram secara dinamis yang berisi entri untuk setiap sumber interupsi di perangkat. Setiap entri dalam tabel ini dapat diprogram dengan salah satu pesan yang didedikasikan untuk perangkat, dan dapat disembunyikan secara independen. Pengemudi dapat mengubah pengaturan pesan interupsi menjadi entri tabel dan memeriksa apakah suatu entri telah dimask. Untuk informasi selengkapnya, lihat Mengonfigurasi MSI-X secara dinamis.
Driver dapat mendaftarkan rutinitas InterruptMessageService tunggal yang menangani semua pesan yang mungkin atau rutinitas InterruptService individual untuk setiap pesan.
Para driver dapat menangani MSI yang dikirim perangkat sebagai berikut:
Selama penginstalan driver, aktifkan MSI di registri. Anda juga dapat menggunakan registri untuk menentukan jumlah pesan yang akan dialokasikan untuk perangkat. Untuk informasi selengkapnya, lihat Mengaktifkan Interupsi Message-Signaled di Registri.
Secara opsional, tingkatkan jumlah pesan interupsi dan simpan beberapa pengaturan per pesan dengan merespons permintaan IRP_MN_FILTER_RESOURCE_REQUIREMENTS . Untuk informasi selengkapnya, lihat Menggunakan Interupsi Deskriptor Sumber Daya.
Dalam rutinitas pengiriman driver untuk IRP_MN_START_DEVICE, panggil IoConnectInterruptEx untuk mendaftarkan rutinitas InterruptService atau InterruptMessageService untuk melayani gangguan perangkat. Gunakan versi CONNECT_FULLY_SPECIFIED IoConnectInterruptEx untuk mendaftarkan rutinitas InterruptService untuk pesan tertentu atau versi CONNECT_MESSAGE_BASED IoConnectInterruptEx untuk mendaftarkan rutinitas InterruptMessageService tunggal untuk semua pesan. Untuk informasi selengkapnya, lihat Menggunakan Versi CONNECT_MESSAGE_BASED IoConnectInterruptEx dan Menggunakan Versi CONNECT_FULLY_SPECIFIED IoConnectInterruptEx.
Setelah driver tidak lagi bermaksud untuk menangani interupsi dari perangkat, panggil IoDisconnectInterruptEx (setelah menonaktifkan interupsi perangkat) untuk menghapus rutinitas layanan interupsi yang terdaftar.
Driver yang dirancang untuk menggunakan beberapa pesan harus memeriksa apakah jumlah pesan yang diharapkan dialokasikan. Jika manajer Plug and Play (PnP) tidak dapat mengalokasikan jumlah pesan yang diminta, itu justru mengalokasikan tepat satu pesan ke perangkat. Driver dapat memeriksa jumlah pesan yang benar-benar dialokasikan dengan salah satu cara berikut:
Manajer PnP melaporkan jumlah pesan yang dialokasikan dalam daftar deskriptor sumber daya mentahnya. Untuk informasi selengkapnya, lihat Menggunakan Interupsi Deskriptor Sumber Daya.
Ketika IoConnectInterruptEx kembali, IoConnectInterruptEx mengatur Parameters-MessageBased.ConnectContext.InterruptMessageTable-MessageCount ke jumlah pesan yang dialokasikan.>>