IDmaChannel 接口 (portcls.h)

IDmaChannel 接口提供 DMA 通道及其关联的 DMA 缓冲区和用法参数的抽象。 WaveCyclic 或 WavePci 端口驱动程序实现此接口,并将其公开给 WaveCyclic 或 WavePci 微型端口驱动程序。 微型端口驱动程序通过调用端口驱动程序的新XxxDmaChannel 方法获取对端口驱动程序实现 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 对象传输的缓冲区的大小(以字节为单位)。

要求

要求 价值
目标平台 窗户
标头 portcls.h