Bagikan melalui


Fungsi WdfDmaTransactionCancel (wdfdmatransaction.h)

[Berlaku untuk KMDF saja]

Metode WdfDmaTransactionCancel mencoba membatalkan transaksi DMA yang menunggu alokasi register peta.

Sintaks

BOOLEAN WdfDmaTransactionCancel(
  [in] WDFDMATRANSACTION DmaTransaction
);

Parameter

[in] DmaTransaction

Handel ke objek transaksi DMA yang mewakili transaksi yang sedang dibatalkan. Transaksi ini pasti sudah diinisialisasi oleh driver.

Mengembalikan nilai

WdfDmaTransactionCancel mengembalikan TRUE jika kerangka kerja berhasil membatalkan alokasi register peta. Dalam hal ini, tidak ada transfer yang selesai, dan kerangka kerja tidak membuat panggilan balik DMA tambahan pada transaksi sampai dimulai kembali.

Metode mengembalikan FALSE jika utas lain sudah memproses transaksi ini, atau jika driver belum memanggil WdfDmaTransactionExecute. Dalam kasus pertama, kerangka kerja saat ini memanggil atau akan memanggil EvtProgramDma atau EvtReserveDma. Pada titik ini, driver yang menentukan profil DMA mode sistem mungkin memanggil WdfDmaTransactionStopSystemTransfer.

Metode ini juga mengembalikan FALSE jika dipanggil dengan transaksi yang dialokasikan dari pengaktif DMA versi 2.

Keterangan

Driver mungkin memanggil WdfDmaTransactionCancel dari fungsi panggilan balik peristiwa EvtRequestCancel yang disediakannya dalam panggilan ke WdfRequestMarkCancelableEx. Untuk contoh kode yang menunjukkan cara melakukan ini, lihat WdfDmaTransactionStopSystemTransfer.

Driver mungkin juga memanggil WdfDmaTransactionCancel dari fungsi panggilan balik peristiwa EvtIoCanceledOnQueue .

Pembatalan hanya dapat berhasil jika panggilan ke WdfDmaTransactionCancel terjadi setelah panggilan ke WdfDmaTransactionExecute, tetapi sebelum metode WdfDmaTransactionExecute telah memulai alokasi DMA. Untuk informasi selengkapnya, lihat Membatalkan Transaksi DMA.

Driver harus memanggil WdfDmaTransactionCancel setelah memanggil WdfDmaTransactionInitialize, tetapi sebelum memanggil WdfDmaTransactionRelease atau WdfObjectDelete untuk menghapus objek transaksi.

Jangan panggil WdfDmaTransactionCancel setelah kerangka kerja memanggil EvtProgramDma atau EvtReserveDma.

Driver harus meminta penggunaan DMA versi 3 sebelum memanggil WdfDmaTransactionCancel. Untuk memilih DMA versi 3, atur anggota WdmDmaVersionOverridedari WDF_DMA_ENABLER_CONFIG ke 3.

Jika driver memanggil WdfDmaTransactionCancel pada transaksi yang dialokasikan dari pengaktif DMA versi 2, kerangka kerja menghasilkan kesalahan pemverifikasi dan WdfDmaTransactionCancel mengembalikan FALSE. Dalam hal ini, tidak ada upaya yang dilakukan untuk membatalkan transaksi.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8
Target Platform Universal
Versi KMDF minimum 1.11
Header wdfdmatransaction.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.)
IRQL <=DISPATCH_LEVEL
Aturan kepatuhan DDI DriverCreate(kmdf)

Lihat juga

EvtProgramDma

EvtReserveDma

WdfDmaTransactionStopSystemTransfer