EVT_WDF_DPC fungsi panggilan balik (wdfdpc.h)

[Berlaku untuk KMDF saja]

Fungsi panggilan balik EvtDpcFunc driver melakukan operasi yang ditentukan driver di IRQL = DISPATCH_LEVEL.

Sintaks

EVT_WDF_DPC EvtWdfDpc;

void EvtWdfDpc(
  [in] WDFDPC Dpc
)
{...}

Parameter

[in] Dpc

Handel ke objek DPC kerangka kerja.

Nilai kembali

Tidak ada

Keterangan

Untuk mendaftarkan fungsi panggilan balik EvtDpcFunc , driver Anda harus menempatkan alamat fungsi dalam struktur WDF_DPC_CONFIG dan memanggil WdfDpcCreate.

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

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

Alih-alih menyediakan fungsi panggilan balik EvtDpcFunc , banyak driver menyediakan satu fungsi panggilan balik EvtInterruptDpc untuk setiap jenis gangguan yang didukung perangkatnya. 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 EvtDpcFunc , driver harus memanggil WdfDpcEnqueue. Driver biasanya memanggil WdfDpcEnqueue dari fungsi panggilan balik EvtInterruptIsr .

Ketika driver memanggil WdfDpcEnqueue, 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 EvtDpcFunc objek.

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 EvtDpcFunc . Oleh karena itu, fungsi panggilan balik EvtDpcFunc 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 EvtDpcFunc driver dengan eksekusi fungsi panggilan balik lainnya. Untuk informasi selengkapnya, lihat Menyinkronkan Kode Interupsi.

Untuk mendapatkan handel ke objek induk objek DPC, fungsi panggilan balik EvtDpcFunc dapat memanggil WdfDpcGetParentObject. Untuk mendapatkan penunjuk ke struktur KDPC yang mendasar objek DPC, fungsi panggilan balik EvtDpcFunc dapat memanggil WdfDpcWdmGetDpc.

Untuk informasi selengkapnya tentang menggunakan fungsi panggilan balik EvtDpcFunc , lihat Melayani Interupsi.

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1,0
Header wdfdpc.h (termasuk Wdf.h)
IRQL DISPATCH_LEVEL

Lihat juga

EvtInterruptDpc

EvtInterruptIsr

WDF_DPC_CONFIG

WdfDpcCreate

Antrean WdfDpcEnqueue

WdfDpcGetParentObject

WdfDpcWdmGetDpc