Fungsi WdfDmaTransactionDmaCompletedFinal (wdfdmatransaction.h)
[Hanya berlaku untuk KMDF]
Metode WdfDmaTransactionDmaCompletedFinal memberi tahu kerangka kerja bahwa operasi transfer DMA perangkat telah selesai dengan kondisi underrun dan memasok lamanya transfer yang selesai.
Sintaks
BOOLEAN WdfDmaTransactionDmaCompletedFinal(
[in] WDFDMATRANSACTION DmaTransaction,
[in] size_t FinalTransferredLength,
[out] NTSTATUS *Status
);
Parameter
[in] DmaTransaction
Handel ke objek transaksi DMA yang diperoleh driver dari panggilan sebelumnya ke WdfDmaTransactionCreate.
[in] FinalTransferredLength
Jumlah byte yang ditransfer perangkat.
[out] Status
Penunjuk ke lokasi yang menerima status transfer DMA. Untuk informasi selengkapnya, lihat bagian Keterangan untuk WdfDmaTransactionDmaCompleted.
Nilai kembali
WdfDmaTransactionDmaCompletedFinal mengembalikan FALSE jika driver menyediakan parameter input yang tidak valid. Jika tidak, WdfDmaTransactionDmaCompletedFinal selalu mengembalikan TRUE, yang menunjukkan bahwa kerangka kerja tidak akan mencoba mentransfer byte lagi untuk transaksi DMA yang ditentukan parameter DmaTransaction .
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Driver biasanya memanggil WdfDmaTransactionDmaCompletedFinal dari dalam panggilan balik EvtInterruptDpc . Driver untuk perangkat DMA mode sistem mungkin memanggil WdfDmaTransactionDmaCompletedFinal dari dalam fungsi panggilan balik peristiwa EvtDmaTransactionDmaTransferComplete .
Dalam sampel PLX9x5x , driver memanggil WdfDmaTransactionDmaCompletedFinal dari fungsi panggilan balik EvtProgramDma-nya .
Metode WdfDmaTransactionDmaCompletedFinal berperilaku sama seperti WdfDmaTransactionDmaCompleted, kecuali bahwa driver biasanya memanggil WdfDmaTransactionDmaCompletedFinal jika perangkat keras melaporkan kondisi yang kurang berfungsi. Kondisi underrun berarti bahwa perangkat keras tidak dapat mentransfer semua byte yang ditentukan untuk transfer DMA terakhir. Panggilan ke WdfDmaTransactionDmaCompletedFinal menghentikan kerangka kerja memulai transfer DMA lagi untuk transaksi DMA yang ditentukan.
Ketika driver Anda memanggil WdfDmaTransactionDmaCompletedFinal, driver menyediakan jumlah byte yang ditransfer. Nilai yang dikembalikan selalu TRUE, karena kerangka kerja tidak akan mencoba mentransfer byte lagi untuk transaksi yang ditentukan.
Untuk informasi selengkapnya tentang menyelesaikan transfer DMA, lihat Menyelesaikan Transfer DMA.
Contoh
Contoh kode berikut memberi tahu kerangka kerja bahwa operasi transfer DMA perangkat telah selesai dengan kondisi underrun.
BOOLEAN success;
NTSTATUS status;
success = WdfDmaTransactionDmaCompletedFinal(
DmaTransaction,
transferLength,
&status
);
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Header | wdfdmatransaction.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.) |
IRQL | <=DISPATCH_LEVEL |
Aturan kepatuhan DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk