Compartilhar via


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)

Confira também

EvtProgramDma

EvtReserveDma

WdfDmaTransactionStopSystemTransfer