Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Метод 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-channel. Этот параметр будет одним из типов непагированных пулов, определенных в перечислении POOL_TYPE.
[in] PortStream
Указатель на интерфейс IPortWavePciStream объекта потока драйвера порта.
[in] Pin
Указывает идентификатор пин-кода, определяющий открытый пин-код. Если дескриптор дескриптора фильтра драйвера WavePci указывает общее количество n n заводов закреплений в фильтре, допустимые значения для параметра Закрепление находятся в диапазоне от 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::SetState и IMiniportWavePciStream::GetPosition.)
Параметр dataFormat, указывающий формат данных потока, указывает на одну из следующих расширенных версий структуры KSDATAFORMAT:
Если минипорт-драйвер не предоставляет указатель группы служб (то есть, если NewStream вызов выходных данных NULL через указатель ServiceGroup), драйвер портов настраивает собственный периодический таймер вместо обработки событий потока и часов. Период для этого таймера в настоящее время составляет 20 миллисекунда, но период может измениться в будущих реализациях.
Параметры Stream Stream, OuterUnknown, PortStreamи ServiceGroup соответствуют соглашениям подсчета ссылок для объектов COM.
Обратите внимание, что NewStream не следует обычным соглашениям о подсчете ссылок в обработке указателя, который он выводит через параметр DmaChannel OUT. После завершения работы драйвера порта с помощью ссылок, получаемых с помощью других параметров out метода NewStream, Stream и ServiceGroup, он освобождает их, как ожидалось. В отличие от этого, драйвер портов никогда не использует указатель DmaChannel, который он получает от вызова NewStream, и он никогда не вызывает release на объекте DmaChannel.
Пример звукового драйвера ac97 в комплекте драйверов Microsoft Windows (WDK) отражает это поведение. Эта реализация метода IMiniportWavePci::NewStream вызывает AddRef на Stream и ServiceGroup ссылается на то, что он выводит, но не ссылку DmaChannel. Это поведение сохраняется ради обратной совместимости.
Обратите внимание, что методы NewStream для других типов портов (WaveCyclic, в частности) соответствуют обычным соглашениям о подсчете ссылок для всех параметров OUT.
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Всеобщий |
| заголовка | portcls.h (include Portcls.h) |
| IRQL | PASSIVE_LEVEL |