Compartir a través de


PCANCEL_MAPPED_TRANSFER función de devolución de llamada (wdm.h)

El CancelMappedTransfer rutina cancela una transferencia DMA del sistema que está asignada actualmente a un adaptador.

Sintaxis

PCANCEL_MAPPED_TRANSFER PcancelMappedTransfer;

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

Parámetros

[in] DmaAdapter

Puntero a una estructura de DMA_ADAPTER. Esta estructura es el objeto de adaptador que espera a que se complete la transferencia DMA pendiente. El autor de la llamada obtuvo este puntero de una llamada anterior a la rutina IoGetDmaAdapter y el autor de la llamada pasó este puntero al MapTransferEx llamada que configuró los registros de mapa para la transferencia DMA.

[in] DmaTransferContext

Puntero a un contexto de transferencia de DMA. Este valor de parámetro debe ser el mismo contexto de transferencia de DMA que se pasó al AllocateAdapterChannelEx llamada que solicitó la asignación del canal de adaptador.

Valor devuelto

cancelMappedTransfer devuelve STATUS_SUCCESS si la llamada se realiza correctamente. De lo contrario, devuelve un código de error adecuado.

Observaciones

CancelMappedTransfer no es una rutina del sistema a la que se puede llamar directamente por nombre. Solo se puede llamar a esta rutina por puntero desde la dirección devuelta en una estructura de DMA_OPERATIONS. Los controladores obtienen la dirección de esta rutina llamando a IoGetDmaAdapter con el miembro Version del parámetro DeviceDescription establecido en DEVICE_DESCRIPTION_VERSION3. Si IoGetDmaAdapter devuelve null, la rutina no está disponible en la plataforma.

Esta rutina marca el contexto de transferencia asociado como cancelado, lo que impide que se realicen más transferencias en este contexto. Después de cancelar una transferencia, se llama a su rutina de finalización, pero el estado de la transferencia puede establecerse en DmaCancelled.

Independientemente de si se cancela o completa una transferencia DMA del sistema, siempre se debe llamar a la rutina FlushAdapterBuffer s o FlushAdapterBuffersEx para vaciar los datos que permanezcan en la memoria caché interna del controlador DMA del sistema al final de una operación de transferencia de DMA. Una vez cancelada o completada la transferencia, se debe realizar la llamada FlushAdapterBuffersXxx antes de que se libere el canal DMA o se llame a la rutina MapTransferEx para configurar los registros de mapa para una nueva transferencia DMA.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows 8.
de la plataforma de destino de Escritorio
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
irQL <= DISPATCH_LEVEL

Consulte también

AllocateAdapterChannelEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

FlushAdapterBuffersEx

initializeDmaTransferContext

IoGetDmaAdapter

MapTransferEx