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 |