Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El método NewStream crea una nueva instancia de una secuencia lógica asociada a un canal físico especificado.
Sintaxis
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
);
Parámetros
[out] Stream
Puntero de salida para la nueva secuencia. Este parámetro apunta a una variable de puntero asignada por el llamador en la que el método escribe un puntero a la interfaz IMiniportWavePciStream del objeto de secuencia. El autor de la llamada especifica un puntero deNULL válido que no es NULL para este parámetro.
[in, optional] OuterUnknown
Puntero al interfaz IUnknown de un objeto que necesita agregar el objeto de secuencia. Este parámetro es opcional. Si no se requiere la agregación, el autor de la llamada especifica este parámetro como NULL.
[in] PoolType
Especifica el tipo de grupo de memoria desde el que se debe asignar el almacenamiento para el objeto de canal DMA. Este parámetro será uno de los tipos de grupo no paginados definidos en la enumeración POOL_TYPE.
[in] PortStream
Puntero a la interfaz IPortWavePciStream del objeto stream del controlador de puerto.
[in] Pin
Especifica un identificador de patilla que identifica la patilla que se va a abrir. Si el descriptor de filtro del controlador de miniport wavePci especifica un total de n generadores de patillas en el filtro, los valores válidos para el pin de parámetro se encuentran en el intervalo de 0 a n-1.
[in] Capture
Especifica si se va a crear una secuencia de captura o una secuencia de representación. Este parámetro es TRUE para un canal de captura (entrada) y FALSE para un canal de reproducción (salida).
[in] DataFormat
Puntero a una estructura KSDATAFORMAT que especifica el formato de datos de la secuencia.
[out] DmaChannel
Puntero de salida para el canal DMA. Este parámetro apunta a una variable de puntero asignada por el llamador en la que el método escribe un puntero al objeto IDmaChannel de la secuencia. El autor de la llamada especifica un puntero deNULL válido que no es NULL para este parámetro.
[out] ServiceGroup
Puntero de salida para el grupo de servicios. Este parámetro apunta a una variable de puntero asignada por el llamador en la que el método escribe un puntero en la interfaz IServiceGroup del objeto de grupo de servicios de la secuencia. Este es el grupo de servicios que se está registrando para la notificación de interrupción. El autor de la llamada especifica un puntero deNULL válido que no es NULL para este parámetro.
Valor devuelto
NewStream devuelve STATUS_SUCCESS si la llamada se realizó correctamente. De lo contrario, el método devuelve un código de error adecuado.
Observaciones
El método NewStream establece el estado inicial de la secuencia en KSSTATE_STOP y su posición inicial en cero. (Vea IMiniportWavePciStream::SetState e IMiniportWavePciStream::GetPosition).
El parámetro DataFormat , que especifica el formato de datos de la secuencia, apunta a una de las siguientes versiones extendidas específicas de audio de la estructura KSDATAFORMAT :
Si el controlador de miniporte no proporciona un puntero de grupo de servicio (es decir, si la NewStream llamada genera NULL a través del puntero ServiceGroup ), el controlador de puerto configura su propio temporizador periódico en su lugar para procesar eventos de posición de flujo y reloj. El período de este temporizador es actualmente de 20 milisegundos, pero el período podría cambiar en futuras implementaciones.
Los parámetros Stream, OuterUnknown, PortStream y ServiceGroup siguen las convenciones de recuento de referencias para objetos COM.
Tenga en cuenta que NewStream no sigue las convenciones habituales de recuento de referencias en su control del puntero que genera a través del parámetro OUT DmaChannel . Cuando el controlador de puerto termina de usar las referencias que recibe a través de los NewStream demás parámetros OUT del método, Stream y ServiceGroup, los libera, según lo previsto. Por el contrario, el controlador de puerto nunca usa el puntero DmaChannel que recibe de la NewStream llamada y nunca llama a Release en el objeto DmaChannel .
El controlador de audio de ejemplo ac97 del Kit de controladores de Microsoft Windows (WDK) refleja este comportamiento. La implementación de este ejemplo del IMiniportWavePci::NewStream método llama a AddRef en las referencias Stream y ServiceGroup que genera, pero no la referencia de DmaChannel . Este comportamiento se conserva por motivos de compatibilidad con versiones anteriores.
Tenga en cuenta que los NewStream métodos para los otros tipos de puerto (WaveCíclico, en particular) siguen las convenciones habituales de recuento de referencias para todos sus parámetros OUT.
Requisitos
| Requisito | Valor |
|---|---|
| de la plataforma de destino de | Universal |
| encabezado | portcls.h (incluya Portcls.h) |
| irQL | PASSIVE_LEVEL |