共用方式為


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 傳回 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