Поделиться через


функция обратного вызова PCANCEL_MAPPED_TRANSFER (wdm.h)

Подпрограмма CancelMappedTransfer отменяет системную передачу DMA, которая в настоящее время сопоставлена с адаптером.

Синтаксис

PCANCEL_MAPPED_TRANSFER PcancelMappedTransfer;

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

Параметры

[in] DmaAdapter

Указатель на структуру DMA_ADAPTER . Эта структура представляет собой объект адаптера, ожидающий завершения ожидающей передачи DMA. Вызывающий объект получил этот указатель из предыдущего вызова подпрограммы IoGetDmaAdapter , и вызывающий передал этот указатель на вызов MapTransferEx , который настроил регистры карты для передачи DMA.

[in] DmaTransferContext

Указатель на контекст передачи DMA. Это значение параметра должно быть тем же контекстом передачи DMA, который был передан в вызов AllocateAdapterChannelEx , запрашивающий выделение канала адаптера.

Возвращаемое значение

CancelMappedTransfer возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае возвращается соответствующий код ошибки.

Комментарии

CancelMappedTransfer не является системной подпрограммой, которую можно вызывать напрямую по имени. Эта подпрограмма может вызываться только указателем из адреса, возвращаемого в структуре DMA_OPERATIONS . Драйверы получают адрес этой подпрограммы, вызывая IoGetDmaAdapter с элементом Version параметра DeviceDescription , для DEVICE_DESCRIPTION_VERSION3. Если IoGetDmaAdapter возвращает значение NULL, подпрограмма недоступна на вашей платформе.

Эта подпрограмма помечает связанный контекст передачи как отмененный, что предотвращает дальнейшую передачу в этом контексте. После отмены передачи вызывается подпрограмма завершения, но для состояния передачи может быть задано значение DmaCancelled.

Независимо от того, отменена или завершена передача DMA системы, необходимо всегда вызывать подпрограмму FlushAdapterBuffers или FlushAdapterBuffersEx для очистки всех данных, которые остаются во внутреннем кэше контроллера DMA системы в конце операции передачи DMA. После отмены или завершения передачи вызов FlushAdapterBuffersXxx должен произойти перед освобождением канала DMA или вызовом процедуры MapTransferEx для настройки регистров карты для новой передачи DMA.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 8.
Целевая платформа Персональный компьютер
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
IRQL <= DISPATCH_LEVEL

См. также раздел

AllocateAdapterChannelEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

FlushAdapterBuffersEx

InitializeDmaTransferContext

IoGetDmaAdapter

MapTransferEx