Метод 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-channel. Этот параметр имеет одно из значений перечисления POOL_TYPE.

[in] PinID

Указывает идентификатор пин-кода. Этот параметр определяет пин-код, который должен быть открыт. Если метод IMiniport драйвера DMus miniport ::GetDescription выводит дескриптор фильтра, указывающий общую сумму n пин-фабрик в фильтре, то допустимые идентификаторы пин-кода находятся в диапазоне от 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 , но минипорт-драйвер создает объект IMXF , который метод выводит через параметр ppMXF . Дополнительные сведения о IMXF и IAllocatorMXF см. в разделе "Транспорт MIDI".

Значение параметра StreamType метода похоже на значениеIMiniportDMus::NewStream параметра Capture метода IMiniportMidi::NewStream:

  • При создании потока на пин-коде MIDI параметр метода IMiniportMidi::NewStreamCapture указывает, должен ли пин-код служить приемником для потока отрисовки MIDI (Capture = FALSE) или в качестве источника потока записи MIDI (capture = 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 синтезаторов программного обеспечения.

Параметры ppMXF, pOuterUnknown, ppServiceGroup, pAllocatorMXF и pMasterClock соответствуют соглашениям о подсчете ссылок для объектов COM.

Требования

Требование Ценность
целевая платформа Рабочий стол
Заголовок dmusicks.h (include Dmusicks.h)
IRQL пассивный уровень

См. также

DMUS_KERNEL_EVENT

IAllocatorMXF

IMXF

IMasterClock

IMiniport::GetDescription

IMiniportDMus

IMiniportMidi::NewStream

IServiceGroup

ISynthSinkDMus

KSDATAFORMAT

POOL_TYPE