IDmaChannel 接口 (portcls.h)

接口 IDmaChannel 提供 DMA 通道及其关联的 DMA 缓冲区和用法参数的抽象。 WaveCyclic 或 WavePci 端口驱动程序实现此接口,并将其公开给 WaveCyclic 或 WavePci 微型端口驱动程序。 微型端口驱动程序通过调用端口驱动程序的 NewXxxDmaChannel 方法之一IDmaChannel来获取对端口驱动程序实现对象的引用:

IPortWavePci::NewMasterDmaChannel

IPortWaveCyclic::NewMasterDmaChannel

IPortWaveCyclic::NewSlaveDmaChannel

如果微型端口驱动程序需要的功能不在端口驱动程序的默认实现中,也可以实现自己的 IDmaChannel 接口。 有关此内容的详细信息,请参阅 波形筛选器。 当端口驱动程序调用微型端口驱动程序的 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