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)

Consulte también

WdfDmaTransactionCreate

WdfDmaTransactionDmaCompleted

WdfDmaTransactionDmaCompletedWithLength