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 傳輸是否已取消或完成,FlushAdapterBuffers 或 FlushAdapterBuffersEx 例程都必須呼叫 ,才能在 DMA 傳輸作業結束時清除系統 DMA 控制器內部快取中保留的任何數據。 取消或完成傳輸之後,必須先呼叫 FlushAdapterBuffersXxx 呼叫,才能釋放 DMA 通道或呼叫 MapTransferEx 例程來設定新的 DMA 傳輸的對應緩存器。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | 從 Windows 8 開始提供。 |
目標平臺 | 桌面 |
標頭 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
IRQL | <= DISPATCH_LEVEL |