共用方式為


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 傳輸內容的指標。 此參數值必須是傳遞至要求配接器通道配置之 AllocateAdapterChannelEx 呼叫的相同 DMA 傳輸內容。

傳回值

如果呼叫成功,CancelMappedTransfer 會傳回STATUS_SUCCESS。 否則,它會傳回適當的錯誤碼。

言論

CancelMappedTransfer 不是可以直接依名稱呼叫的系統例程。這個例程只能由 DMA_OPERATIONS 結構中傳回之位址的指標呼叫。驅動程式會呼叫 ioGetDmaAdapter ,並將 DeviceDescription 參數的 Version 成員 DEVICE_DESCRIPTION_VERSION3呼叫 IoGetDmaAdapter,以取得此例程的位址。 如果 IoGetDmaAdapter 傳回 NULL ,則您的平台上無法使用例程。

此例程會將相關聯的傳輸內容標示為已取消,這可防止在此內容下進行任何進一步的傳輸。 取消傳輸之後,會呼叫其完成例程,但傳輸的狀態可能會設定為 DmaCancelled

無論系統 DMA 傳輸是否已取消或完成,FlushAdapterBuffersFlushAdapterBuffersEx 例程都必須呼叫 ,才能在 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