EVT_WDF_REQUEST_COMPLETION_ROUTINE fungsi panggilan balik (wdfrequest.h)
[Berlaku untuk KMDF dan UMDF]
Fungsi panggilan balik peristiwa CompletionRoutine driver dijalankan ketika driver lain menyelesaikan permintaan I/O tertentu.
Sintaks
EVT_WDF_REQUEST_COMPLETION_ROUTINE EvtWdfRequestCompletionRoutine;
void EvtWdfRequestCompletionRoutine(
[in] WDFREQUEST Request,
[in] WDFIOTARGET Target,
[in] PWDF_REQUEST_COMPLETION_PARAMS Params,
[in] WDFCONTEXT Context
)
{...}
Parameter
[in] Request
Handel ke objek permintaan kerangka kerja yang mewakili permintaan I/O yang telah selesai.
[in] Target
Handel ke objek target I/O yang mewakili target I/O yang menyelesaikan permintaan.
[in] Params
Penunjuk ke struktur WDF_REQUEST_COMPLETION_PARAMS yang berisi informasi tentang permintaan yang telah selesai. Lihat catatan di bawah ini mengenai validitas parameter penyelesaian.
[in] Context
Informasi konteks yang disediakan driver, yang ditentukan driver dalam panggilan sebelumnya ke WdfRequestSetCompletionRoutine.
Nilai kembali
Tidak ada
Keterangan
Untuk mendaftarkan fungsi panggilan balik CompletionRoutine untuk permintaan I/O, driver harus memanggil WdfRequestSetCompletionRoutine. Untuk informasi selengkapnya tentang fungsi panggilan balik ini, lihat Menyelesaikan Permintaan I/O.
Struktur parameter penyelesaian sepenuhnya diisi dengan informasi yang valid hanya jika driver memformat permintaan dengan memanggil salah satu hal berikut:
- Metode WdfIoTargetFormatXxx , misalnya WdfIoTargetFormatRequestForRead
- Metode WdfUsbTargetDeviceFormatRequestForXxx , misalnya WdfUsbTargetDeviceFormatRequestForString
- Metode WdfUsbTargetPipeFormatRequestForXxx , misalnya WdfUsbTargetPipeFormatRequestForWrite
Jika driver memformat permintaan menggunakan WdfRequestFormatRequestUsingCurrentType atau WdfRequestWdmFormatUsingStackLocation, hanya bidang IoStatus dalam struktur parameter penyelesaian yang valid.
CompletionRoutine driver KMDF dapat berjalan di IRQL <= DISPATCH_LEVEL terlepas dari ExecutionLevel yang ditentukan dalam struktur WDF_OBJECT_ATTRIBUTES untuk objek permintaan I/O.
Contoh
Jenis fungsi dideklarasikan dalam Wdfrequest.h, sebagai berikut.
typedef VOID
(EVT_WDF_REQUEST_COMPLETION_ROUTINE)(
IN WDFREQUEST Request,
IN WDFIOTARGET Target,
IN PWDF_REQUEST_COMPLETION_PARAMS Params,
IN WDFCONTEXT Context
);
Untuk menentukan fungsi panggilan balik CompletionRoutine yang bernama MyCompletionRoutine, Anda harus terlebih dahulu memberikan deklarasi fungsi yang diperlukan SDV dan alat verifikasi lainnya, sebagai berikut:
EVT_WDF_REQUEST_COMPLETION_ROUTINE MyCompletionRoutine;
Kemudian, terapkan fungsi panggilan balik Anda sebagai berikut:
VOID
MyCompletionRoutine (
IN WDFREQUEST Request,
IN WDFIOTARGET Target,
IN PWDF_REQUEST_COMPLETION_PARAMS Params,
IN WDFCONTEXT Context
)
{...}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfrequest.h (termasuk Wdf.h) |
IRQL | <=DISPATCH_LEVEL |