Bagikan melalui


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)

Lihat juga

CompletionRoutine

EvtRequestCancel

WdfRequestMarkCancelable

WdfRequestMarkCancelableEx

WdfRequestSend