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) |