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

WdfDmaTransactionCreate

WdfDmaTransactionDmaCompleted

WdfDmaTransactionDmaCompletedWithLength