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

La rutina CancelMappedTransfer 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 DMA_ADAPTER . Esta estructura es el objeto de adaptador que está esperando a que se complete la transferencia DMA pendiente. El llamador obtuvo este puntero de una llamada anterior a la rutina IoGetDmaAdapter y el autor de la llamada pasó este puntero a la llamada MapTransferEx que configuró los registros de mapa para la transferencia de 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ó a la llamada AllocateAdapterChannelEx 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.

Comentarios

CancelMappedTransfer no es una rutina del sistema a la que se puede llamar directamente por nombre. Solo el puntero de la dirección devuelta en una estructura de DMA_OPERATIONS puede llamar a esta rutina . 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 evita las transferencias adicionales en este contexto. Después de cancelar una transferencia, se llama a su rutina de finalización, pero el estado de la transferencia podría establecerse en DmaCancelled.

Independientemente de si se cancela o completa una transferencia DMA del sistema, siempre se debe llamar a la rutina FlushAdapterBuffers o FlushAdapterBuffersEx para vaciar los datos que permanezcan en la caché interna del controlador DMA del sistema al final de una operación de transferencia DMA. Una vez cancelada o completada la transferencia, se debe producir 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 Value
Cliente mínimo compatible Disponible a partir de Windows 8.
Plataforma de destino Escritorio
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
IRQL <= DISPATCH_LEVEL

Consulte también

AllocateAdapterChannelEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

FlushAdapterBuffersEx

InitializeDmaTransferContext

IoGetDmaAdapter

MapTransferEx