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