Função WdfDmaTransactionCancel (wdfdmatransaction.h)
[Aplica-se somente ao KMDF]
O método WdfDmaTransactionCancel tenta cancelar uma transação de DMA que está aguardando a alocação de registros de mapa.
Sintaxe
BOOLEAN WdfDmaTransactionCancel(
[in] WDFDMATRANSACTION DmaTransaction
);
Parâmetros
[in] DmaTransaction
Um identificador para o objeto de transação DMA que representa a transação que está sendo cancelada. Essa transação já deve ter sido inicializada pelo driver.
Retornar valor
WdfDmaTransactionCancel retornará TRUE se a estrutura cancelar com êxito a alocação de registro de mapa. Nesse caso, nenhuma transferência é concluída e a estrutura não faz retornos de chamada de AMD adicionais na transação até que ela seja reinicializada.
O método retornará FALSE se outro thread já estiver processando essa transação ou se o driver ainda não tiver chamado WdfDmaTransactionExecute. No primeiro caso, a estrutura está chamando ou chamará EvtProgramDma ou EvtReserveDma. Neste ponto, um driver que especificou um perfil de DMA no modo de sistema pode chamar WdfDmaTransactionStopSystemTransfer.
O método também retorna FALSE se chamado com uma transação que foi alocada de um habilitador DMA versão 2.
Comentários
O driver pode chamar WdfDmaTransactionCancel de uma função de retorno de chamada de evento EvtRequestCancel que ele fornece em uma chamada para WdfRequestMarkCancelableEx. Para obter um exemplo de código que mostra como fazer isso, consulte WdfDmaTransactionStopSystemTransfer.
O driver também pode chamar WdfDmaTransactionCancel de uma função de retorno de chamada de evento EvtIoCanceledOnQueue .
O cancelamento só poderá ser bem-sucedido se a chamada para WdfDmaTransactionCancel ocorrer após a chamada para WdfDmaTransactionExecute, mas antes que o método WdfDmaTransactionExecute inicie a alocação de DMA. Para obter mais informações, consulte Cancelando transações de DMA.
O driver deve chamar WdfDmaTransactionCancel depois de chamar WdfDmaTransactionInitialize, mas antes de chamar WdfDmaTransactionRelease ou WdfObjectDelete para excluir o objeto de transação.
Não chame WdfDmaTransactionCancel depois que a estrutura tiver chamado EvtProgramDma ou EvtReserveDma.
Um driver deve solicitar o uso do DMA versão 3 antes de chamar WdfDmaTransactionCancel. Para selecionar o DMA versão 3, defina o membro WdmDmaVersionOverride de WDF_DMA_ENABLER_CONFIG como 3.
Se um driver chamar WdfDmaTransactionCancel em uma transação alocada de um habilitador DMA versão 2, a estrutura gerará um erro de verificador e WdfDmaTransactionCancel retornará FALSE. Nesse caso, não é feita nenhuma tentativa de cancelar a transação.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 |
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.11 |
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) |