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)

Lihat juga

EvtInterruptDpc

EvtInterruptIsr

WdfInterruptCreate