WdfDmaTransactionDmaCompletedFinal 函式 (wdfdmatransaction.h)

[僅適用於 KMDF]

WdfDmaTransactionDmaCompletedFinal 方法會通知架構裝置的 DMA 傳輸作業已完成,並提供已完成傳輸的長度。

語法

BOOLEAN WdfDmaTransactionDmaCompletedFinal(
  [in]  WDFDMATRANSACTION DmaTransaction,
  [in]  size_t            FinalTransferredLength,
  [out] NTSTATUS          *Status
);

參數

[in] DmaTransaction

驅動程式從先前呼叫 WdfDmaTransactionCreate 取得的 DMA 交易物件的句柄。

[in] FinalTransferredLength

裝置傳輸的位元組數目。

[out] Status

接收 DMA 傳輸狀態的位置指標。 如需詳細資訊,請參閱 WdfDmaTransactionDmaCompleted 的一節。

傳回值

如果驅動程式提供無效的輸入參數,WdfDmaTransactionDmaCompletedFinal 會傳回 FALSE。 否則, WdfDmaTransactionDmaCompletedFinal 一律會傳回 TRUE,這表示架構不會嘗試為 DmaTransaction 參數指定的 DMA 交易傳送任何其他位元組。

如果驅動程式提供無效的物件句柄,就會發生錯誤檢查。

備註

驅動程式通常會從其 EvtInterruptDpc 回呼內呼叫 WdfDmaTransactionDmaCompletedFinal。 系統模式 DMA 裝置的驅動程式可能會從 EvtDmaTransactionDmaTransferComplete 事件回呼函式內呼叫 WdfDmaTransactionDmaCompletedFinal

PLX9x5x 範例中,驅動程式會從其 EvtProgramDma 回呼函式呼叫 WdfDmaTransactionDmaCompletedFinal

WdfDmaTransactionDmaCompletedFinal 方法的行為與 WdfDmaTransactionDmaCompleted 相同,但驅動程式通常會呼叫 WdfDmaTransactionDmaCompletedFinal,前提是硬體報告了不足的狀況。 不足狀況表示硬體無法傳輸針對最後一個 DMA 傳輸所指定的所有位元組。 呼叫 WdfDmaTransactionDmaCompletedFinal 會停止架構針對指定的 DMA 交易啟動任何其他 DMA 傳輸。

當您的驅動程式呼叫 WdfDmaTransactionDmaCompletedFinal 時,驅動程式會提供已傳輸的位元組數目。 傳回值一律為 TRUE,因為架構不會嘗試傳輸指定交易的更多位元元組。

如需完成 DMA 傳輸的詳細資訊,請參閱 完成 DMA 傳輸

範例

下列程式代碼範例會通知架構裝置的 DMA 傳輸作業已完成,且條件不足。

BOOLEAN  success;
NTSTATUS  status;

success = WdfDmaTransactionDmaCompletedFinal(
                                             DmaTransaction,
                                             transferLength,
                                             &status
                                             );

規格需求

需求
目標平台 Universal
最小 KMDF 版本 1.0
標頭 wdfdmatransaction.h (包含 Wdf.h)
程式庫 Wdf01000.sys (請參閱 Framework Library Versioning.)
IRQL <=DISPATCH_LEVEL
DDI 合規性規則 DriverCreate (kmdf) KmdfIrql (kmdf) KmdfIrql2 (kmdf) 、 KmdfIrqlExplicit (kmdf)

另請參閱

WdfDmaTransactionCreate

WdfDmaTransactionDmaCompleted

WdfDmaTransactionDmaCompletedWithLength