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 |