IDmaChannel 介面 (portcls.h)

介面 IDmaChannel 提供 DMA 通道及其相關聯 DMA 緩衝區和使用參數的抽象概念。 WaveCyclic 或 WavePci 連接埠驅動程式會實作此介面,並將它公開給 WaveCyclic 或 WavePci 迷你埠驅動程式。 迷你埠驅動程式會呼叫其中一個埠驅動程式的 NewXxxDmaChannel 方法,以取得物件的埠驅動程式實IDmaChannel作參考:

IPortWavePci::NewMasterDmaChannel

IPortWaveCyclic::NewMasterDmaChannel

IPortWaveCyclic::NewSettingeDmaChannel

如果迷你埠驅動程式需要不在埠驅動程序的默認實作中,也可以實作自己的 IDmaChannel 介面。 如需詳細資訊,請參閱 Wave Filters。 例如,當埠驅動程式呼叫 miniport 驅動程式的 NewStream 方法 (IMiniportWaveCyclic::NewStream) 時,此方法會將迷你埠驅動程式 IDmaChannel 的對象輸出至埠驅動程式。 IDmaChannel 繼承自 IUnknown 介面。

Portcls.sys 中介面的目前實作 IDmaChannel 不是多線程安全,因為它不會在內部同步存取共享數據。 一般而言,單一驅動程式線程會呼叫 物件的方法 IDmaChannel 。 在此情況下,兩個方法呼叫不會同時存取相同的數據。 不過,如果多個線程可能同時呼叫物件的方法 IDmaChannel ,驅動程式寫入器必須同步處理方法呼叫,以避免內部數據損毀。

如需詳細資訊,請參閱 DMA 通道物件

注意

Microsoft 支援多元且包容性的環境。 本文包含 Microsoft 適用於無偏差通訊 的術語參考,可辨識為排除。 本文中會使用單字或片語進行一致性,因為它目前會出現在軟體中。 當軟體更新為移除語言時,本文將會更新為一致。

繼承

IDmaChannel 介面繼承自 IUnknown 介面。

方法

IDmaChannel 介面具有這些方法。

 
IDmaChannel::AllocateBuffer

AllocateBuffer 方法會配置埠驅動程式和 DMA 硬體可存取的通用緩衝區。
IDmaChannel::AllocatedBufferSize

AllocatedBufferSize 方法會傳回配置緩衝區的大小。
IDmaChannel::BufferSize

BufferSize 方法會傳回 DMA 通道數據緩衝區位元組的大小。
IDmaChannel::CopyFrom

CopyFrom 方法會將範例數據從 DMA 通道的通用緩衝區複製到指定的目的地緩衝區。
IDmaChannel::CopyTo

CopyTo 方法會將範例數據從指定的來源緩衝區複製到 DMA 通道的通用緩衝區。
IDmaChannel::FreeBuffer

FreeBuffer 方法會釋放先前呼叫 IDmaChannel::AllocateBuffer 所配置的緩衝區。
IDmaChannel::GetAdapterObject

GetAdapterObject 方法會傳回 DMA 通道的硬體配接器物件。
IDmaChannel::MaximumBufferSize

MaximumBufferSize 方法會傳回這個 DMA 通道物件設定為支援的最大緩衝區位元組大小。
IDmaChannel::P hysicalAddress

PhysicalAddress 方法會傳回配置緩衝區的實體位址。
IDmaChannel::SetBufferSize

SetBufferSize 方法會設定 DMA 通道目前的緩衝區大小。
IDmaChannel::SystemAddress

SystemAddress 方法會傳回配置緩衝區的系統位址。
IDmaChannel::TransferCount

TransferCount 方法會傳回目前由次級 DMA 物件傳輸的緩衝區位元組大小。

規格需求

需求
目標平台 Windows
標頭 portcls.h