Compartilhar via


Função WdfDmaTransactionDmaCompletedFinal (wdfdmatransaction.h)

[Aplica-se somente ao KMDF]

O método WdfDmaTransactionDmaCompletedFinal notifica a estrutura de que a operação de transferência de DMA de um dispositivo foi concluída com uma condição de execução insuficiente e fornece o comprimento da transferência concluída.

Sintaxe

BOOLEAN WdfDmaTransactionDmaCompletedFinal(
  [in]  WDFDMATRANSACTION DmaTransaction,
  [in]  size_t            FinalTransferredLength,
  [out] NTSTATUS          *Status
);

Parâmetros

[in] DmaTransaction

Um identificador para um objeto de transação DMA que o driver obteve de uma chamada anterior para WdfDmaTransactionCreate.

[in] FinalTransferredLength

O número de bytes transferidos pelo dispositivo.

[out] Status

Um ponteiro para um local que recebe o status da transferência de DMA. Para obter mais informações, consulte a seção Comentários para WdfDmaTransactionDmaCompleted.

Retornar valor

WdfDmaTransactionDmaCompletedFinal retornaráFALSE se o driver fornecer um parâmetro de entrada inválido. Caso contrário, WdfDmaTransactionDmaCompletedFinal sempre retornará TRUE, o que indica que a estrutura não tentará transferir mais bytes para a transação DMA especificada pelo parâmetro DmaTransaction .

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Comentários

Um driver normalmente chama WdfDmaTransactionDmaCompletedFinal de dentro de seu retorno de chamada EvtInterruptDpc . Um driver para um dispositivo DMA no modo de sistema pode chamar wdfDmaTransactionDmaCompletedFinal de dentro de uma função de retorno de chamada de evento EvtDmaTransactionDmaTransferComplete .

No exemplo PLX9x5x , o driver chama WdfDmaTransactionDmaCompletedFinal de sua função de retorno de chamada EvtProgramDma .

O método WdfDmaTransactionDmaCompletedFinal se comporta da mesma forma que WdfDmaTransactionDmaCompleted, exceto que os drivers normalmente chamam WdfDmaTransactionDmaCompletedFinal se o hardware relatar uma condição de execução insuficiente. Uma condição de execução insuficiente significa que o hardware não pôde transferir todos os bytes especificados para a última transferência de AMD. Uma chamada para WdfDmaTransactionDmaCompletedFinal impede que a estrutura inicie mais transferências de DMA para a transação de DMA especificada.

Quando o driver chama WdfDmaTransactionDmaCompletedFinal, o driver fornece o número de bytes que foram transferidos. O valor retornado é sempre TRUE, pois a estrutura não tentará transferir mais bytes para a transação especificada.

Para obter mais informações sobre como concluir transferências de DMA, consulte Concluindo uma transferência de DMA.

Exemplos

O exemplo de código a seguir notifica a estrutura de que a operação de transferência de DMA de um dispositivo foi concluída com uma condição de execução insuficiente.

BOOLEAN  success;
NTSTATUS  status;

success = WdfDmaTransactionDmaCompletedFinal(
                                             DmaTransaction,
                                             transferLength,
                                             &status
                                             );

Requisitos

Requisito Valor
Plataforma de Destino Universal
Versão mínima do KMDF 1.0
Cabeçalho wdfdmatransaction.h (include Wdf.h)
Biblioteca Wdf01000.sys (consulte Controle de versão da biblioteca de estrutura.)
IRQL <=DISPATCH_LEVEL
Regras de conformidade da DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Confira também

WdfDmaTransactionCreate

WdfDmaTransactionDmaCompleted

WdfDmaTransactionDmaCompletedWithLength