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 传输

IMiniportDMus::NewStream 方法的 StreamType 参数的含义类似于 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