Share via


重複使用 DMA 交易對象

[僅適用于 KMDF]

在驅動程式處理與 DMA 交易相關聯的所有 DMA 傳輸之後,驅動程式就可以刪除或重複使用交易對象。 一般而言,驅動程式的 EvtInterruptDpc 回呼函式會藉由呼叫 WdfObjectDelete) 來刪除交易對象 (。 之後,當驅動程式建立新的 DMA 交易時,它會呼叫 WdfDmaTransactionCreate 來建立新的交易對象。

不過,有時候,驅動程式重複使用交易對象會很有説明。 在這種情況下,驅動程式會呼叫 WdfDmaTransactionRelease ,而不是 WdfObjectDelete

例如,假設您的驅動程式和裝置在電腦記憶體資源不足時必須運作。 若要處理此記憶體問題,您的驅動程式可以使用下列程式:

  1. 驅動程式的 EvtDriverDeviceAdd 回呼函式可以呼叫 WdfDmaTransactionCreate 來建立一或多個交易對象。 驅動程式會將控制碼儲存至這些交易對象。

  2. 每次驅動程式準備好建立並初始化新的交易時,都會呼叫 WdfDmaTransactionCreate。 如果這個方法傳回STATUS_INSUFFICIENT_RESOURCES,驅動程式可以使用其中一個預存的交易對象。

  3. 如果驅動程式使用其中一個預存的交易對象,它應該會在交易完成時重複使用交易對象,而不是刪除它。 驅動程式會呼叫 WdfDmaTransactionRelease 而不是 WdfObjectDelete,來設定交易對象以供重複使用。

PLX9x5x5x範例會重複使用 DMA 交易對象。