Condividi tramite


Riutilizzo di oggetti transazioni DMA

[Si applica solo a KMDF]

Dopo che un driver elabora tutti i trasferimenti DMA associati a una transazione DMA, il driver può eliminare o riutilizzare l'oggetto transazione. In genere, la funzione di callback EvtInterruptDpc del driver elimina l'oggetto transazione (chiamando WdfObjectDelete). Successivamente, quando il driver crea una nuova transazione DMA, chiama WdfDmaTransactionCreate per creare un nuovo oggetto transazione.

Tuttavia, a volte è utile per il driver riutilizzare gli oggetti transazioni. In questi casi, il driver chiama WdfDmaTransactionRelease anziché WdfObjectDelete.

Si supponga, ad esempio, che il driver e il dispositivo funzionino quando le risorse di memoria del computer sono basse. Per gestire questo problema di memoria, il driver può usare la procedura seguente:

  1. La funzione di callback evtDriverDevice del driver può chiamare WdfDmaTransactionCrea per creare uno o più oggetti transazioni. Il driver salva gli handle in questi oggetti transazioni.

  2. Ogni volta che il driver è pronto per creare e inizializzare una nuova transazione, chiama WdfDmaTransactionCreate. Se questo metodo restituisce STATUS_INSUFFICIENT_RESOURCES, il driver può usare uno degli oggetti transazioni archiviati.

  3. Se il driver usa uno dei relativi oggetti transazioni archiviati, deve riutilizzare l'oggetto transazione, anziché eliminarlo, al termine della transazione. Il driver configura l'oggetto transazioni per il riutilizzo chiamando WdfDmaTransactionRelease anziché WdfObjectDelete.

L'esempio PLX9x5x riutilizza oggetti transazioni DMA.