IMiniportDMus::NewStream 方法 (dmusicks.h)

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

语法

NTSTATUS NewStream(
  [out]          PMXF             *MXF,
  [in, optional] PUNKNOWN         OuterUnknown,
  [in]           POOL_TYPE        PoolType,
  [in]           ULONG            PinID,
  [in]           DMUS_STREAM_TYPE StreamType,
  [in]           PKSDATAFORMAT    DataFormat,
  [out]          PSERVICEGROUP    *ServiceGroup,
  [in]           PAllocatorMXF    AllocatorMXF,
  [in]           PMASTERCLOCK     MasterClock,
  [out]          PULONGLONG       SchedulePreFetch
);

参数

[out] MXF

新流的输出指针。 此参数指向调用方分配的指针变量,该方法将指针写入到流对象的 IMXF 接口。

[in, optional] OuterUnknown

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

[in] PoolType

指定应从中分配 DMA 通道对象的存储的内存池的类型。 此参数设置为 POOL_TYPE 枚举值之一。

[in] PinID

指定引脚 ID。 此参数标识要打开的引脚。 如果 DMus 微型端口驱动程序的 IMiniport::GetDescription 方法输出一个筛选器描述符,该描述符指定筛选器上总共 n 个引脚工厂,则有效引脚 ID 的范围为 0 到 n-1

[in] StreamType

指定要创建的数据流的类型。 此参数设置为以下DMUS_STREAM_TYPE枚举值之一:

DMUS_STREAM_MIDI_RENDER

指定播放) 流 (MIDI 输出。

DMUS_STREAM_MIDI_CAPTURE

指定 MIDI 输入流。

DMUS_STREAM_WAVE_SINK

指定波形输出流。

有关更多信息,请参见下面的“备注”部分。

[in] DataFormat

指向内核流 KSDATAFORMAT 结构的指针,该结构指定要用于此实例的数据格式

[out] ServiceGroup

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

[in] AllocatorMXF

指向 IAllocatorMXF 对象的指针。 这是端口驱动程序的内存分配器,用于回收 DMUS_KERNEL_EVENT 结构。

[in] MasterClock

指向 IMasterClock 对象的指针。 此主时钟将 KS 时钟的包装器传递给微型端口驱动程序。 需要主时钟指针才能同步到引用时间。

[out] SchedulePreFetch

计划预提取时间的输出指针。 此参数是指向调用方分配的 ULONGLONG 变量的指针,方法在其中写入一个时间值,该值指定查询事件的距离。 时间以 100 纳秒为单位指定。 端口驱动程序负责对超出微型端口驱动程序在此处指定的时间量的任何事件进行排序。

返回值

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

注解

请注意,端口驱动程序创建 IAllocatorMXF 对象,NewStream该方法通过 pAllocatorMXF 参数输入该对象,但微型端口驱动程序创建该方法通过 ppMXF 参数输出的 IMXF 对象。 有关 IMXFIAllocatorMXF 的详细信息,请参阅 MIDI 传输

方法的 StreamType 参数的含义IMiniportDMus::NewStream类似于 IMiniportMidi::NewStream 方法的 Capture 参数:

  • 在 MIDI 引脚上创建流时, IMiniportMidi::NewStream 方法的 Capture 参数指示该引脚是用作 MIDI 呈现流的接收器 (捕获 = FALSE) ,还是作为 MIDI 捕获流的源 (捕获 = TRUE) 。
  • 同样,在 MIDI 或 DirectMusic 引脚上创建流时, IMiniportDMus::NewStream 该方法的 StreamType 参数可以指示该引脚是用作 MIDI 呈现流的接收器 (StreamType = DMUS_STREAM_MIDI_RENDER) ,还是作为 MIDI 捕获流的源 (StreamType = DMUS_STREAM_MIDI_CAPTURE) 。
但是,DirectMusic 筛选器上的引脚可以支持 MIDI 筛选器不可用的第三个选项。 引脚可以用作波形输出流的源, (StreamType = DMUS_STREAM_WAVE_SINK) 。 DMus 端口驱动程序为此流实现波接收器。 创建波形输出流后,DMus 端口驱动程序查询流对象 (端口驱动程序通过 IMiniportDMus::NewStream 方法的 ppMXF 输出参数) 获取其 ISynthSinkDMus 接口。 端口驱动程序的波形接收器调用此接口上的 Render 方法,以从软件合成器中拉取波形数据。 有关详细信息,请参阅 适用于 Kernel-Mode 软件合成器的波形接收器

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

要求

要求
目标平台 桌面
标头 dmusicks.h (包括 Dmusicks.h)
IRQL PASSIVE_LEVEL

另请参阅

DMUS_KERNEL_EVENT

IAllocatorMXF

IMXF

IMasterClock

IMiniport::GetDescription

IMiniportDMus

IMiniportMidi::NewStream

IServiceGroup

ISynthSinkDMus

KSDATAFORMAT

POOL_TYPE