IPortWaveCyclic::NewSlaveDmaChannel 方法 (portcls.h)

方法 NewSlaveDmaChannel 创建从属 DMA 通道的新实例。

语法

NTSTATUS NewSlaveDmaChannel(
  [out] PDMACHANNELSLAVE *DmaChannel,
  [in]  PUNKNOWN         OuterUnknown,
  [in]  PRESOURCELIST    ResourceList,
  [in]  ULONG            DmaIndex,
  [in]  ULONG            MaximumLength,
  [in]  BOOLEAN          DemandMode,
  [in]  DMA_SPEED        DmaSpeed
);

参数

[out] DmaChannel

指向调用方分配的指针变量的指针,方法在其中写入指向新 DMA 通道对象的 IDmaChannelSlave 接口的指针。 为此参数指定有效的非 NULL 指针值。

[in] OuterUnknown

指向需要聚合 DMA 通道对象的对象的 IUnknown 接口的指针。 此参数是可选的。 如果不需要聚合,请将此参数指定为 NULL

[in] ResourceList

指向 IResourceList 对象的指针。 此资源列表包含描述 DMA 通道的资源。

[in] DmaIndex

DMA 通道描述符的资源列表中的索引。 函数使用此值作为 ResourceList 对象的 IResourceList::FindxxxEntry 方法的调用参数。

[in] MaximumLength

将与此通道关联的循环 DMA 缓冲区的最大长度(以字节为单位)。

[in] DemandMode

指示与 DMA 通道关联的设备是否支持需求模式。

[in] DmaSpeed

可以将 DMA 速度指定为以下DMA_SPEED枚举值之一: CompatibleTypeATypeBTypeCTypeF

返回值

NewSlaveDmaChannel 如果调用成功,则返回STATUS_SUCCESS。 否则,该方法将返回相应的错误代码。

注解

注意

Microsoft 支持多样化且包容的环境。 本文包含 Microsoft 无偏见通信风格指南 识别为排除性的术语的引用。 为了保持一致性,本文使用了单词或短语,因为它当前出现在软件中。 当软件更新为删除语言时,本文将更新为一致。

参数 MaximumLengthDemandModeDmaSpeed 在含义上与具有相同名称的 DEVICE_DESCRIPTION 结构的成员相似。

缺少 DMA 硬件功能的 WaveCyclic 设备称为 从属设备。 相比之下, 主设备 具有内置的总线主控 DMA 硬件。 从属设备必须依赖于系统 DMA 控制器来执行它所需的任何数据传输。 方法 NewSlaveDmaChannel 为从属设备创建 DMA 通道对象。 若要为主设备创建 DMA 通道对象,请改为调用 IPortWaveCyclic::NewMasterDmaChannel 方法。 Microsoft Windows 驱动程序工具包 (WDK) 中的 sb16 示例音频驱动程序是次级设备的 WaveCyclic 微型端口驱动程序的一个示例。 有关主设备和从属设备的详细信息,请参阅 IDmaChannelIDmaChannelSlave

DmaChannelOuterUnknownResourceList 参数遵循 COM 对象的引用计数约定

要求

要求
目标平台 通用
标头 portcls.h (包括 Portcls.h)
IRQL PASSIVE_LEVEL

另请参阅

DEVICE_DESCRIPTION

IDmaChannel

IDmaChannelSlave

IPortWaveCyclic

IPortWaveCyclic::NewMasterDmaChannel

IResourceList