Partilhar 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.

Valor de retorno

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

Uma verificação de bug ocorre se o driver fornece um identificador de objeto inválido.

Observações

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

No exemplo de 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 subexecução. Uma condição de subexecução significa que o hardware não pôde transferir todos os bytes especificados para a última transferência de DMA. 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 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 Concluir umde 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 subexecução.

BOOLEAN  success;
NTSTATUS  status;

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

Requisitos

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

Consulte também

WdfDmaTransactionCreate

WdfDmaTransactionDmaCompleted

WdfDmaTransactionDmaCompletedWithLength