共用方式為


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
                                             );

需求

要求 價值
目標平臺 普遍
最低 KMDF 版本 1.0
標題 wdfdmatransaction.h (包括 Wdf.h)
程式庫 Wdf01000.sys (請參閱架構連結庫版本控制。)
IRQL <=DISPATCH_LEVEL
DDI 合規性規則 DriverCreate(kmdf)KmdfIrql(kmdf)KmdfIrql2(kmdf),KmdfIrqlExplicit(kmdf)

另請參閱

WdfDmaTransactionCreate

WdfDmaTransactionDmaCompleted

WdfDmaTransactionDmaCompletedWithLength