Compartilhar via


PCANCEL_MAPPED_TRANSFER função de retorno de chamada (wdm.h)

A rotina CancelMappedTransfer cancela uma transferência de DMA do sistema mapeada atualmente para um adaptador.

Sintaxe

PCANCEL_MAPPED_TRANSFER PcancelMappedTransfer;

NTSTATUS PcancelMappedTransfer(
  [in] PDMA_ADAPTER DmaAdapter,
  [in] PVOID DmaTransferContext
)
{...}

Parâmetros

[in] DmaAdapter

Um ponteiro para uma estrutura DMA_ADAPTER . Essa estrutura é o objeto do adaptador que está aguardando a conclusão da transferência de DMA pendente. O chamador obteve esse ponteiro de uma chamada anterior para a rotina IoGetDmaAdapter e o chamador passou esse ponteiro para a chamada MapTransferEx que configurou os registros de mapa para a transferência de DMA.

[in] DmaTransferContext

Um ponteiro para um contexto de transferência de DMA. Esse valor de parâmetro deve ser o mesmo contexto de transferência de DMA que foi passado para a chamada AllocateAdapterChannelEx que solicitou a alocação do canal do adaptador.

Retornar valor

CancelMappedTransfer retornará STATUS_SUCCESS se a chamada for bem-sucedida. Caso contrário, ele retornará um código de erro apropriado.

Comentários

CancelMappedTransfer não é uma rotina do sistema que pode ser chamada diretamente pelo nome. Essa rotina só pode ser chamada pelo ponteiro do endereço retornado em uma estrutura DMA_OPERATIONS. Os drivers obtêm o endereço dessa rotina chamando IoGetDmaAdapter com o membro Version do parâmetro DeviceDescription definido como DEVICE_DESCRIPTION_VERSION3. Se IoGetDmaAdapter retornar NULL, a rotina não estará disponível em sua plataforma.

Essa rotina marca o contexto de transferência associado como cancelado, o que impede transferências adicionais nesse contexto. Depois que uma transferência é cancelada, sua rotina de conclusão é chamada, mas o status da transferência pode ser definido como DmaCancelled.

Independentemente de uma transferência de DMA do sistema ser cancelada ou concluída, a rotina FlushAdapterBuffers ou FlushAdapterBuffersEx sempre deve ser chamada para liberar todos os dados que permanecem no cache interno do controlador de DMA do sistema no final de uma operação de transferência de DMA. Depois que a transferência for cancelada ou concluída, a chamada de FlushAdapterBuffersXxx deverá ocorrer antes que o canal DMA seja liberado ou a rotina MapTransferEx seja chamada para configurar os registros de mapa para uma nova transferência de DMA.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível a partir do Windows 8.
Plataforma de Destino Área de Trabalho
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL <= DISPATCH_LEVEL

Confira também

AllocateAdapterChannelEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

FlushAdapterBuffersEx

InitializeDmaTransferContext

IoGetDmaAdapter

MapTransferEx