Bagikan melalui


Metode IWDFIoRequest::MarkCancelable (wudfddi.h)

[Peringatan: UMDF 2 adalah versi terbaru UMDF dan pengganti UMDF 1. Semua driver UMDF baru harus ditulis menggunakan UMDF 2. Tidak ada fitur baru yang ditambahkan ke UMDF 1 dan ada dukungan terbatas untuk UMDF 1 pada versi Windows 10 yang lebih baru. Driver Universal Windows harus menggunakan UMDF 2. Untuk informasi selengkapnya, lihat Mulai menggunakan UMDF.]

Metode MarkCancelable memungkinkan pembatalan permintaan I/O.

Sintaks

void MarkCancelable(
  [in] IRequestCallbackCancel *pCancelCallback
);

Parameter

[in] pCancelCallback

Penunjuk ke antarmuka IRequestCallbackCancel yang metodenya dipanggil kerangka kerja setelah permintaan I/O dibatalkan.

Nilai kembali

Tidak ada

Keterangan

Setelah driver menerima permintaan I/O sebagai input ke fungsi panggilan balik peristiwa IQueueCallbackRead::OnRead, IQueueCallbackWrite::OnWrite, atau IQueueCallbackDeviceIoControl::OnDeviceIoControl , driver dapat memanggil metode MarkCancelable untuk mengaktifkan pembatalan permintaan. Nantinya, driver dapat memanggil metode IWDFIoRequest::UnmarkCancelable untuk menonaktifkan pembatalan permintaan.

Sebelum driver memanggil MarkCancelable, driver harus mengimplementasikan metode IRequestCallbackCancel::OnCancel .

User Mode Driver Framework (UMDF) hanya memungkinkan satu metode IRequestCallbackCancel::OnCancel per antrean. Oleh karena itu, ketika driver memanggil MarkCancelable untuk permintaan yang terkait dengan antrean tertentu untuk memungkinkan kerangka kerja membatalkan permintaan tersebut, driver harus meneruskan pointer ke antarmuka IRequestCallbackCancel untuk objek request-callback yang sama. Kemudian, untuk membatalkan setiap permintaan, kerangka kerja meneruskan pointer ke antarmuka IWDFIoRequest untuk permintaan dalam panggilan ke metode IRequestCallbackCancel::OnCancel objek request-callback ini.

Driver harus memanggil IWDFIoRequest::Complete, baik dari metode IRequestCallbackCancel::OnCancel atau dari jalur penyelesaian I/O regulernya.

Setelah driver memanggil MarkCancelable untuk mengaktifkan pembatalan, permintaan tetap dapat dibatalkan sementara driver memiliki kepemilikan objek permintaan, kecuali driver memanggil UnmarkCancelable untuk menonaktifkan pembatalan.

Jika driver memanggil metode IWDFIoRequest::ForwardToIoQueue untuk meneruskan permintaan ke antrean yang berbeda, aturan berikut berlaku:

  • Pembatalan permintaan I/O tidak dapat diaktifkan ketika driver meneruskan permintaan ke antrean yang berbeda.

    Biasanya, driver tidak boleh memanggil MarkCancelable untuk mengaktifkan pembatalan permintaan sebelum memanggil IWDFIoRequest::ForwardToIoQueue. Atau, driver dapat membuat permintaan dapat dibatalkan. Namun, driver kemudian harus memanggil UnmarkCancelable untuk menonaktifkan pembatalan permintaan sebelum memanggil IWDFIoRequest::ForwardToIoQueue.

  • Saat permintaan berada dalam antrean kedua, kerangka kerja memilikinya dan dapat membatalkannya tanpa memberi tahu driver.
  • Setelah kerangka kerja menghapus antrean permintaan dari antrean kedua dan mengirimkan permintaan ke driver, driver dapat memanggil MarkCancelable untuk mengaktifkan pembatalan.

Contoh

Contoh kode berikut menyiapkan permintaan sehingga kerangka kerja dapat membatalkannya.

    //
    // The QueryInteraface should not fail.
    //
    (VOID)this->QueryInterface(_uuidof(IRequestCallbackCancel),
                               (PVOID *)&cancelCallback);

    pWdfRequest->MarkCancelable(cancelCallback);

Persyaratan

Persyaratan Nilai
Akhir dukungan Tidak tersedia di UMDF 2.0 dan yang lebih baru.
Target Platform Desktop
Versi UMDF minimum 1,5
Header wudfddi.h (termasuk Wudfddi.h)
DLL WUDFx.dll

Lihat juga

IQueueCallbackDeviceIoControl::OnDeviceIoControl

IQueueCallbackRead::OnRead

IQueueCallbackWrite::OnWrite

IRequestCallbackCancel

IRequestCallbackCancel::OnCancel

IWDFIoRequest

IWDFIoRequest::Complete

IWDFIoRequest::ForwardToIoQueue

IWDFIoRequest::UnmarkCancelable