Fungsi WdfInterruptQueueDpcForIsr (wdfinterrupt.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfInterruptQueueDpcForIsr mengantre fungsi panggilan balik EvtInterruptDpc objek interupsi untuk eksekusi.
Sintaks
BOOLEAN WdfInterruptQueueDpcForIsr(
[in] WDFINTERRUPT Interrupt
);
Parameter
[in] Interrupt
Handel ke objek interupsi kerangka kerja.
Nilai kembali
WdfInterruptQueueDpcForIsr mengembalikan TRUE jika berhasil mengantre fungsi panggilan balik EvtInterruptDpc objek interupsi. Metode mengembalikan FALSE jika fungsi panggilan balik sebelumnya diantrekan dan belum dijalankan.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Driver biasanya memanggil WdfInterruptQueueDpcForIsr dari dalam fungsi panggilan balik EvtInterruptIsr .
Fungsi panggilan balik EvtInterruptDpc objek interupsi hanya dapat diantrekan sekali sebelum dijalankan. Oleh karena itu, jika panggilan ke WdfInterruptQueueDpcForIsr berhasil, panggilan berikutnya akan mengembalikan FALSE sampai kerangka kerja menghapus antrean fungsi panggilan balik EvtInterruptDpc .
Panggilan balik EvtInterruptDpc akan berjalan pada prosesor yang mengantrekannya. Jika driver Anda memanggil WdfInterruptQueueDpcForIsr untuk mengantre DPC lain sementara fungsi panggilan balik EvtInterruptDpc sudah diantrekan atau berjalan, panggilan balik EvtInterruptDpc kedua bahkan mungkin berjalan sebelum yang pertama selesai.
Untuk informasi selengkapnya tentang penanganan gangguan dalam driver berbasis kerangka kerja, lihat Menangani Gangguan Perangkat Keras.
Di KMDF 1.11 dan yang lebih baru, driver dapat memanggil WdfInterruptQueueDpcForIsr dari ISR tingkat pasif. Perhatikan bahwa driver dapat mendaftarkan item kerja atau DPC tetapi tidak keduanya.
Contoh
Contoh kode berikut menunjukkan bagaimana fungsi panggilan balik EvtInterruptIsr harus mengantre fungsi panggilan balik EvtInterruptDpc .
BOOLEAN
MyEvtInterruptIsr(
IN WDFINTERRUPT Interrupt,
IN ULONG MessageID
)
{
BOOLEAN queueDpcSuccess;
//
// Save interrupt information for the
// EvtInterruptDpc function.
//
...
//
// Queue the EvtInterruptDpc function.
//
queueDpcSuccess = WdfInterruptQueueDpcForIsr(Interrupt);
...
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfinterrupt.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DIRQL |
Aturan kepatuhan DDI | DriverCreate(kmdf) |