IMiniportWavePci::NewStream 方法(portcls.h)

NewStream 方法创建与指定物理通道关联的逻辑流的新实例。

语法

NTSTATUS NewStream(
  [out]          PMINIPORTWAVEPCISTREAM *Stream,
  [in, optional] PUNKNOWN               OuterUnknown,
  [in]           POOL_TYPE              PoolType,
  [in]           PPORTWAVEPCISTREAM     PortStream,
  [in]           ULONG                  Pin,
  [in]           BOOLEAN                Capture,
  [in]           PKSDATAFORMAT          DataFormat,
  [out]          PDMACHANNEL            *DmaChannel,
  [out]          PSERVICEGROUP          *ServiceGroup
);

参数

[out] Stream

新流的输出指针。 此参数指向调用方分配的指针变量,该方法将指针写入流对象的 IMiniportWavePciStream 接口。 调用方为此参数指定有效的非NULL 指针。

[in, optional] OuterUnknown

指向需要聚合流对象的对象的 IUnknown 接口的指针。 此参数是可选的。 如果不需要聚合,调用方将此参数指定为 NULL

[in] PoolType

指定应从中分配 DMA 通道对象的存储的内存池的类型。 此参数将是 POOL_TYPE 枚举中定义的非分页池类型之一。

[in] PortStream

指向端口驱动程序流对象的 IPortWavePciStream 接口的指针。

[in] Pin

指定标识要打开的引脚的引脚 ID。 如果 WavePci 微型端口驱动程序的筛选器描述符指定筛选器上的总 n 引脚工厂,则参数 Pin 的有效值在 0 到 n-1 范围内。

[in] Capture

指定是创建捕获流还是呈现流。 此参数 捕获(输入)通道的 TRUE,对于播放(输出)通道 FALSE

[in] DataFormat

指向指定流的数据格式的 KSDATAFORMAT 结构的指针。

[out] DmaChannel

DMA 通道的输出指针。 此参数指向调用方分配的指针变量,该方法将指针写入流 IDmaChannel 对象。 调用方为此参数指定有效的非NULL 指针。

[out] ServiceGroup

服务组的输出指针。 此参数指向调用方分配的指针变量,该方法将指针写入流服务组对象的 IServiceGroup 接口。 这是正在为中断通知注册的服务组。 调用方为此参数指定有效的非NULL 指针。

返回值

如果调用成功,NewStream 返回STATUS_SUCCESS。 否则,该方法将返回适当的错误代码。

言论

NewStream 方法将流的初始状态设置为KSSTATE_STOP,其初始位置设置为零。 (请参阅 IMiniportWavePciStream::SetStateIMiniportWavePciStream::GetPosition.)

DataFormat 参数指定流的数据格式,指向以下特定于音频的扩展版本的 KSDATAFORMAT 结构之一:

KSDATAFORMAT_WAVEFORMATEX

KSDATAFORMAT_DSOUND

如果微型端口驱动程序不提供服务组指针(即,如果 NewStream 通过 ServiceGroup 指针输出 NULL),则端口驱动程序会设置自己的定期计时器,以处理流位置和时钟事件。 此计时器的时间段目前为 20 毫秒,但此时间段可能会在将来的实现中更改。

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

请注意,NewStream 在处理通过 DmaChannel OUT 参数输出的指针时,不遵循通常的引用计数约定。 当端口驱动程序使用它通过 NewStream 方法的其他 OUT 参数接收的引用完成时,StreamServiceGroup,它会按预期释放它们。 相比之下,端口驱动程序从不使用从 NewStream 调用接收的 DmaChannel 指针,并且从不调用 DmaChannel 对象上的 Release

Microsoft Windows 驱动程序工具包 (WDK) 中的 ac97 示例音频驱动程序反映了此行为。 此示例对 StreamAddRef 调用 IMiniportWavePci::NewStream 方法的实现,ServiceGroup 引用,DmaChannel 引用。 为了向后兼容,保留此行为。

请注意,其他端口类型的 NewStream 方法(特别是 WaveCyclic)遵循其所有 OUT 参数的常规引用计数约定。

要求

要求 价值
目标平台 普遍
标头 portcls.h (包括 Portcls.h)
IRQL PASSIVE_LEVEL

另请参阅

IDmaChannel

IMiniportWavePci

IMiniportWavePciStream

IPortWavePciStream

IServiceGroup

KSDATAFORMAT

KSDATAFORMAT_DSOUND

KSDATAFORMAT_WAVEFORMATEX

POOL_TYPE