Fungsi WdfRequestCancelSentRequest (wdfrequest.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfRequestCancelSentRequest mencoba membatalkan permintaan I/O yang sebelumnya dikirimkan pemanggil ke target I/O.
Sintaks
BOOLEAN WdfRequestCancelSentRequest(
[in] WDFREQUEST Request
);
Parameter
[in] Request
Handel ke objek permintaan kerangka kerja.
Nilai kembali
WdfRequestCancelSentRequest mengembalikan TRUE jika berhasil mengirimkan permintaan pembatalan ke target I/O driver. Metode ini mengembalikan FALSE jika permintaan telah selesai atau dibatalkan, atau jika driver target I/O belum memanggil WdfRequestMarkCancelable atau WdfRequestMarkCancelableEx.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Driver dapat memanggil WdfRequestCancelSentRequest untuk mencoba membatalkan permintaan I/O yang sebelumnya telah dikirim ke target I/O dengan memanggil WdfRequestSend.
Jika permintaan berada dalam antrean target I/O, kerangka kerja membatalkan permintaan. Jika kerangka kerja telah mengirimkan permintaan ke driver target I/O, dan jika driver tersebut telah memanggil WdfRequestMarkCancelable atau WdfRequestMarkCancelableEx untuk mengaktifkan pembatalan, kerangka kerja memanggil fungsi panggilan balik EvtRequestCancel driver tersebut. Jika driver target belum memanggil WdfRequestMarkCancelable atau WdfRequestMarkCancelableEx, permintaan tidak dibatalkan kecuali permintaan menjadi dapat dibatalkan.
Jika driver telah mendaftarkan fungsi panggilan balik CompletionRoutine untuk permintaan tersebut, kerangka kerja memanggil fungsi panggilan balik setelah permintaan dibatalkan.
Biasanya, jika driver Anda memanggil WdfRequestCancelSentRequest, driver Anda harus menaikkan jumlah referensi objek permintaan. Untuk informasi selengkapnya, lihat Menyinkronkan Pembatalan Permintaan Terkirim.
Untuk informasi selengkapnya tentang pembatalan permintaan, lihat Membatalkan Permintaan I/O.
Contoh
Contoh kode berikut berasal dari driver sampel kmdf_fx2 . Contoh ini adalah fungsi panggilan balik EvtIoStop . Karena driver ini mengirim setiap permintaan ke target I/O-nya, fungsi panggilan balik EvtIoStop memanggil WdfRequestCancelSentRequest jika perangkat telah dihapus.
VOID
OsrFxEvtIoStop(
IN WDFQUEUE Queue,
IN WDFREQUEST Request,
IN ULONG ActionFlags
)
{
UNREFERENCED_PARAMETER(Queue);
if (ActionFlags & WdfRequestStopActionSuspend) {
WdfRequestStopAcknowledge(Request, FALSE);
} else if (ActionFlags & WdfRequestStopActionPurge) {
WdfRequestCancelSentRequest(Request);
}
return;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfrequest.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Aturan kepatuhan DDI | DriverCreate(kmdf), EvtIoStopCancel(kmdf), EvtIoStopCompleteOrStopAck(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |