Bagikan melalui


EVT_WDF_INTERRUPT_DPC fungsi panggilan balik (wdfinterrupt.h)

[Berlaku untuk KMDF dan UMDF]

Fungsi panggilan balik peristiwa EvtInterruptDpc driver memproses informasi interupsi yang telah disimpan oleh fungsi panggilan balik EvtInterruptIsr driver.

Sintaks

EVT_WDF_INTERRUPT_DPC EvtWdfInterruptDpc;

void EvtWdfInterruptDpc(
  [in] WDFINTERRUPT Interrupt,
  [in] WDFOBJECT AssociatedObject
)
{...}

Parameter

[in] Interrupt

Handel ke objek interupsi kerangka kerja.

[in] AssociatedObject

Handel ke objek perangkat kerangka kerja yang diteruskan driver ke WdfInterruptCreate.

Nilai kembali

Tidak ada

Keterangan

Untuk mendaftarkan fungsi panggilan balik EvtInterruptDpc , driver Anda harus menempatkan alamat fungsi panggilan balik dalam struktur WDF_INTERRUPT_CONFIG sebelum memanggil WdfInterruptCreate.

Driver biasanya menyelesaikan permintaan I/O dalam fungsi panggilan balik EvtInterruptDpc mereka.

Fungsi panggilan balik EvtInterruptDpc dijalankan pada DISPATCH_LEVEL dan tidak boleh mengakses kode yang dapat di-pageable . Jika fungsi panggilan balik EvtInterruptDpc harus melakukan operasi di IRQL = PASSIVE_LEVEL, fungsi ini dapat menggunakan item kerja kerangka kerja.

Di KMDF versi 1.11 dan yang lebih baru, driver Anda dapat mendukung gangguan tingkat pasif dan menyediakan fungsi panggilan balik EvtInterruptWorkItem atau EvtInterruptDpc . Jika driver Anda mendukung gangguan tingkat pasif dan menyediakan fungsi panggilan balik EvtInterruptDpc , driver tidak dapat memperoleh kunci interupsi tingkat pasif dari dalam panggilan balik.

Sebagian besar driver menggunakan satu fungsi panggilan balik EvtInterruptDpc untuk setiap jenis gangguan. Jika driver Anda membuat beberapa objek antrean kerangka kerja untuk setiap perangkat, Anda mungkin mempertimbangkan untuk menggunakan objek DPC terpisah dan fungsi panggilan balik EvtDpcFunc untuk setiap antrean.

Untuk menjadwalkan eksekusi fungsi panggilan balik EvtInterruptDpc , driver harus memanggil WdfInterruptQueueDpcForIsr dari dalam fungsi panggilan balik EvtInterruptIsr .

Ketika driver menjadwalkan eksekusi fungsi panggilan balik EvtInterruptDpc , sistem menambahkan objek DPC ke antrean DPC sistem. Jika sistem tidak menjalankan tugas berprioritas lebih tinggi, sistem akan menghapus objek dari antrean dan memanggil fungsi panggilan balik EvtInterruptDpc .

Sistem tidak menambahkan objek DPC ke antrean DPC jika objek sudah diantrekan. Fungsi panggilan balik EvtInterruptIsr mungkin dipanggil beberapa kali sebelum sistem memanggil fungsi panggilan balik EvtInterruptDpc . Oleh karena itu, fungsi panggilan balik EvtInterruptDpc harus dapat memproses informasi dari beberapa gangguan, dan harus memproses semua gangguan yang telah terjadi sejak terakhir kali dipanggil.

Biasanya, perlu untuk menyinkronkan eksekusi fungsi panggilan balik EvtInterruptDpc driver dengan eksekusi fungsi panggilan balik lainnya. Untuk informasi selengkapnya, lihat Menyinkronkan Kode Interupsi.

Untuk informasi selengkapnya tentang penanganan gangguan dalam driver berbasis kerangka kerja, lihat Menangani Gangguan Perangkat Keras.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1,0
Versi UMDF minimum 2.0
Header wdfinterrupt.h (termasuk Wdf.h)
IRQL (Lihat bagian Keterangan.)

Lihat juga

EvtDpcFunc

EvtInterruptIsr

WDF_INTERRUPT_CONFIG

WdfInterruptCreate

WdfInterruptQueueDpcForIsr