Función WdfDmaTransactionDmaCompletedFinal (wdfdmatransaction.h)
[Solo se aplica a KMDF]
El método WdfDmaTransactionDmaCompletedFinal notifica al marco que la operación de transferencia DMA de un dispositivo se ha completado con una condición de ejecución insuficiente y proporciona la longitud de la transferencia completada.
Sintaxis
BOOLEAN WdfDmaTransactionDmaCompletedFinal(
[in] WDFDMATRANSACTION DmaTransaction,
[in] size_t FinalTransferredLength,
[out] NTSTATUS *Status
);
Parámetros
[in] DmaTransaction
Identificador de un objeto de transacción DMA que el controlador obtuvo de una llamada anterior a WdfDmaTransactionCreate.
[in] FinalTransferredLength
Número de bytes transferidos por el dispositivo.
[out] Status
Puntero a una ubicación que recibe el estado de la transferencia DMA. Para obtener más información, vea la sección Comentarios de WdfDmaTransactionDmaCompleted.
Valor devuelto
WdfDmaTransactionDmaCompletedFinal devuelve FALSE si el controlador proporciona un parámetro de entrada no válido. De lo contrario, WdfDmaTransactionDmaCompletedFinal siempre devuelve TRUE, lo que indica que el marco no intentará transferir más bytes para la transacción DMA que especificó el parámetro DmaTransaction .
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Comentarios
Normalmente, un controlador llama a WdfDmaTransactionDmaCompletedFinal desde su devolución de llamada EvtInterruptDpc . Un controlador para un dispositivo DMA en modo sistema podría llamar a WdfDmaTransactionDmaCompletedFinal desde una función de devolución de llamada de evento EvtDmaTransactionDmaTransferComplete .
En el ejemplo PLX9x5x , el controlador llama a WdfDmaTransactionDmaCompletedFinal desde su función de devolución de llamada EvtProgramDma .
El método WdfDmaTransactionDmaCompletedFinal se comporta igual que WdfDmaTransactionDmaCompleted, salvo que los controladores suelen llamar a WdfDmaTransactionDmaCompletedFinal si el hardware informa de una condición de ejecución insuficiente. Una condición de ejecución insuficiente significa que el hardware no pudo transferir todos los bytes especificados para la última transferencia DMA. Una llamada a WdfDmaTransactionDmaCompletedFinal impide que el marco inicie más transferencias DMA para la transacción DMA especificada.
Cuando el controlador llama a WdfDmaTransactionDmaCompletedFinal, el controlador proporciona el número de bytes transferidos. El valor devuelto siempre es TRUE, ya que el marco no intentará transferir más bytes para la transacción especificada.
Para obtener más información sobre cómo completar las transferencias de DMA, consulte Finalización de una transferencia de DMA.
Ejemplos
En el ejemplo de código siguiente se notifica al marco que la operación de transferencia DMA de un dispositivo se ha completado con una condición de ejecución insuficiente.
BOOLEAN success;
NTSTATUS status;
success = WdfDmaTransactionDmaCompletedFinal(
DmaTransaction,
transferLength,
&status
);
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Encabezado | wdfdmatransaction.h (incluya Wdf.h) |
Library | Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos). |
IRQL | <=DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |