Compartilhar via


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

A rotina CancelMappedTransfer do cancela uma transferência de DMA do sistema mapeada no momento 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.

Valor de retorno

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

Observações

CancelMappedTransfer não é uma rotina do sistema que pode ser chamada diretamente pelo nome. Essa rotina pode ser chamada apenas pelo ponteiro do endereço retornado em uma estrutura de DMA_OPERATIONS. Drivers obtêm o endereço dessa rotina chamando IoGetDmaAdapter com o membro de versão 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 novas transferências 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 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 FlushAdapterBuffersXxx deve 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
de cliente com suporte mínimo Disponível a partir do Windows 8.
da Plataforma de Destino Área de trabalho
cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL <= DISPATCH_LEVEL

Consulte também

AllocateAdapterChannelEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

FlushAdapterBuffersEx

initializeDmaTransferContext

IoGetDmaAdapter

mapTransferEx