Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
[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) |