Метод 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
Указывает идентификатор закрепления. Этот параметр идентифицирует открываемый контакт. Если метод IMiniport::GetDescription драйвера DMus miniport выводит дескриптор фильтра, указывающий в общей сложности 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 . Этот master часов передает оболочку для часов KS драйверу мини-порта. Указатель master часов требуется для синхронизации со временем ссылки.
[out] SchedulePreFetch
Указатель вывода для времени предварительной выборки по расписанию. Этот параметр является указателем на выделенную вызывающим объектом переменную ULONGLONG, в которую метод записывает значение времени, указывающее, насколько далеко вперед следует запрашивать события. Время указывается в 100-наносекундных единицах. Драйвер порта отвечает за виртуализацию всех событий, превышающих время, указанное здесь драйвером мини-порта.
Возвращаемое значение
NewStream
возвращает S_OK, если вызов выполнен успешно. В противном случае метод возвращает соответствующий код ошибки.
Комментарии
Обратите внимание, что драйвер порта создает объект IAllocatorMXF , который NewStream
метод вводит с помощью параметра pAllocatorMXF , а драйвер miniport создает объект IMXF , который метод выводит с помощью параметра ppMXF . Дополнительные сведения об IMXF и IAllocatorMXF см. в разделе MidI Transport.
Значение IMiniportDMus::NewStream
параметра StreamType метода аналогично значению параметра Capture метода IMiniportMidi::NewStream:
- При создании потока на pin-коде MIDI параметр Capture метода IMiniportMidi::NewStream указывает, будет ли закрепление использоваться в качестве приемника для потока отрисовки MIDI (Capture = FALSE) или в качестве источника потока захвата MIDI (Захват = TRUE).
-
Аналогичным образом, при создании потока в закреплении MIDI или DirectMusic параметр StreamType метода может указать,
IMiniportDMus::NewStream
будет ли закрепление служить приемником для потока отрисовки MIDI (StreamType = DMUS_STREAM_MIDI_RENDER) или в качестве источника потока захвата MIDI (StreamType = DMUS_STREAM_MIDI_CAPTURE).
IMiniportDMus::NewStream
выходного параметра ppMXF метода) для своего интерфейса ISynthSinkDMus . Приемник волны драйвера порта вызывает метод Render в этом интерфейсе для извлечения волновых данных из программного синтезатора. Дополнительные сведения см. в статье Приемник волны для Kernel-Mode синтезаторов программного обеспечения.
Параметры ppMXF, pOuterUnknown, ppServiceGroup, pAllocatorMXF и pMasterClock следуют соглашениям о подсчете ссылок для COM-объектов.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | dmusicks.h (включая Dmusicks.h) |
IRQL | PASSIVE_LEVEL |