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 sistem PortCls mengimplementasikan antarmuka IInterruptSync untuk keuntungan driver miniport. IInterruptSync mewakili objek sinkronisasi interupsi yang menyinkronkan eksekusi daftar rutinitas layanan interupsi (ISR) dengan rutinitas non-interupsi.
Objek sinkronisasi interupsi menyediakan dua kemampuan utama:
Eksekusi daftar ISR sebagai respons terhadap gangguan. Objek sinkronisasi tersambung ke sumber interupsi. Setiap kali interupsi terjadi, objek sinkronisasi menjalankan ISR dalam urutan tertentu sesuai dengan mode yang dipilih. (Lihat deskripsi berikut dari tiga mode.)
Eksekusi rutinitas yang bukan ISR. Rutinitas non-interupsi ini tidak terhubung ke interupsi objek sinkronisasi. Sebaliknya, rutinitas tanpa interupsi berjalan pada waktu pilihan pemanggil. Namun, objek sinkronisasi mengeksekusi rutin non-interupsi secara bersamaan dengan daftar ISR dari objek tersebut. Dengan kata lain, rutinitas yang tidak mengganggu berjalan hingga selesai sebelum salah satu ISR dalam daftar objek sinkronisasi mulai dijalankan, dan sebaliknya.
Objek sinkronisasi interupsi memiliki fleksibilitas dalam menangani beberapa ISR. ISR berada dalam daftar tertaut yang diakses oleh objek sinkronisasi pada waktu interupsi. Ketika driver miniport mendaftarkan ISR dengan objek sinkronisasi, itu menentukan apakah ISR harus ditambahkan ke awal atau akhir daftar ini.
Driver miniport memanggil fungsi PcNewInterruptSync untuk membuat objek sinkronisasi interupsi. Selama panggilan ini, driver menentukan cara objek tersebut menelusuri daftar ISR-nya saat interupsi. Panggilan mendukung tiga opsi yang ditentukan oleh konstanta enumerasi INTERRUPTSYNCMODE dalam tabel berikut.
| Konstanta | Makna |
|---|---|
InterruptSyncModeNormal |
Panggil setiap ISR dalam daftar hingga salah satunya mengembalikan STATUS_SUCCESS. |
InterruptSyncModeAll |
Panggil setiap ISR dalam daftar tepat sekali, terlepas dari kode pengembalian ISR sebelumnya. |
InterruptSyncModeRepeat |
Lakukan penelusuran seluruh daftar ISR sampai terjadi penelusuran di mana tidak ada ISR dalam daftar yang mengembalikan STATUS_SUCCESS. |
Dalam mode InterruptSyncModeNormal , objek sinkronisasi memanggil setiap ISR dalam daftar hingga salah satunya mengembalikan STATUS_SUCCESS. Setiap ISR dalam daftar yang muncul setelah ISR ini tidak dipanggil. Mode ini menimulasi cara sistem operasi biasanya menangani ISR. Jika tidak ada ISR yang mengembalikan STATUS_SUCCESS, perilakunya sama dengan InterruptSyncModeAll.
Dalam mode InterruptSyncModeAll , setiap ISR dalam daftar dipanggil tepat sekali, terlepas dari kode pengembalian ISR sebelumnya. Ini ditujukan untuk perangkat keras yang lebih primitif di mana sumber gangguan tidak deterministik, meskipun mungkin berguna dalam situasi lain juga. Misalnya, dua sumber interupsi mungkin disinkronkan dengan erat pada setiap interupsi, terlepas dari sumber mana sebenarnya interupsi tersebut berasal.
Dalam mode InterruptSyncModeRepeat , objek sinkronisasi berulang kali melintasi seluruh daftar ISR hingga perjalanan melalui daftar terjadi di mana tidak ada rutinitas dalam daftar yang mengembalikan STATUS_SUCCESS. Mode ini sesuai untuk situasi di mana gangguan dari beberapa sumber mungkin diaktifkan pada garis interupsi yang sama pada saat yang sama, atau gangguan kedua mungkin terjadi selama pemrosesan ISR. Setiap sumber interupsi harus dapat menentukan apakah diperlukan pemrosesan. Sistem akan berhenti merespons jika ISR yang selalu mengembalikan STATUS_SUCCESS terdaftar dengan objek sinkronisasi dalam mode ini.
Dalam salah satu mode ini, objek sinkronisasi akan mengakui gangguan pada sistem operasi jika salah satu ISR terdaftar mengembalikan STATUS_SUCCESS. Dalam ketiga mode, jika semua sumber gangguan menunjukkan bahwa mereka tidak berhasil menangani gangguan, objek sinkronisasi akan mengembalikan kode hasil yang tidak berhasil ke sistem operasi.
Antarmuka IInterruptSync mendukung metode berikut: