функция обратного вызова 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 |