Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
[Si applica solo a KMDF]
Il metodo WdfDmaTransactionDmaCompletedFinal notifica al framework che l'operazione di trasferimento DMA di un dispositivo è stata completata con una condizione di sottorun e fornisce la lunghezza del trasferimento completato.
Sintassi
BOOLEAN WdfDmaTransactionDmaCompletedFinal(
[in] WDFDMATRANSACTION DmaTransaction,
[in] size_t FinalTransferredLength,
[out] NTSTATUS *Status
);
Parametri
[in] DmaTransaction
Handle per un oggetto transazione DMA ottenuto dal driver da una chiamata precedente a WdfDmaTransactionCreate.
[in] FinalTransferredLength
Numero di byte trasferiti dal dispositivo.
[out] Status
Puntatore a una posizione che riceve lo stato del trasferimento DMA. Per altre informazioni, vedere la sezione Osservazioni per WdfDmaTransactionDmaCompleted.
Valore restituito
WdfDmaTransactionDmaCompletedFinal restituisce FALSE se il driver fornisce un parametro di input non valido. In caso contrario, WdfDmaTransactionDmaCompletedFinal restituisce sempre TRUE, che indica che il framework non tenterà di trasferire altri byte per la transazione DMA specificata dal parametro DmaTransaction.
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Osservazioni:
Un driver chiama in genere WdfDmaTransactionDmaCompletedFinal dall'interno del EvtInterruptDpc callback. Un driver per un dispositivo DMA in modalità sistema potrebbe chiamare WdfDmaTransactionDmaCompletedFinal dall'interno di un EvtDmaTransactionDmaTransferComplete funzione di callback degli eventi.
Nell'esempio di PLX9x5x, il driver chiama WdfDmaTransactionDmaCompletedFinal dal relativo EvtProgramDma funzione di callback.
Il metodo WdfDmaTransactionDmaCompletedFinal si comporta come WdfDmaTransactionDmaCompleted, ad eccezione del fatto che i driver in genere chiamano WdfDmaTransactionDmaCompletedFinal se l'hardware segnala una condizione di sottorun. Una condizione di sottorun indica che l'hardware non è riuscito a trasferire tutti i byte specificati per l'ultimo trasferimento DMA. Una chiamata a WdfDmaTransactionDmaCompletedFinal impedisce al framework di avviare altri trasferimenti DMA per la transazione DMA specificata.
Quando il driver chiama WdfDmaTransactionDmaCompletedFinal, il driver fornisce il numero di byte trasferiti. Il valore restituito è sempre TRUE, perché il framework non tenterà di trasferire altri byte per la transazione specificata.
Per altre informazioni sul completamento dei trasferimenti DMA, vedere Completamento di un trasferimento DMA.
Esempi
L'esempio di codice seguente notifica al framework che l'operazione di trasferimento DMA di un dispositivo è stata completata con una condizione di sottorun.
BOOLEAN success;
NTSTATUS status;
success = WdfDmaTransactionDmaCompletedFinal(
DmaTransaction,
transferLength,
&status
);
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
versione minima di KMDF | 1.0 |
intestazione | wdfdmatransaction.h (include Wdf.h) |
Biblioteca | Wdf01000.sys (vedere Controllo delle versioni della libreria framework). |
IRQL | <=DISPATCH_LEVEL |
regole di conformità DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |