Compartir a través de


Método IMiniportDMus::NewStream (dmusicks.h)

El NewStream método crea una nueva instancia de una secuencia lógica asociada a un canal físico especificado.

Sintaxis

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
);

Parámetros

[out] MXF

Puntero de salida para la nueva secuencia. Este parámetro apunta a una variable de puntero asignada por el autor de la llamada en la que el método escribe un puntero en la interfaz IMXF del objeto de secuencia.

[in, optional] OuterUnknown

Puntero a la 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 se establece en uno de los POOL_TYPE valores de enumeración.

[in] PinID

Especifica el identificador de patilla. Este parámetro identifica el pin que se va a abrir. Si el método IMiniport::GetDescription del controlador DMus miniporta genera un descriptor de filtro que especifica un total de n generadores de patillas en el filtro, los identificadores de patilla válidos se encuentran en el intervalo de 0 a n-1.

[in] StreamType

Especifica el tipo de flujo de datos que se va a crear. Este parámetro se establece en uno de los siguientes DMUS_STREAM_TYPE valores de enumeración:

DMUS_STREAM_MIDI_RENDER

Especifica una secuencia de salida MIDI (reproducción).

DMUS_STREAM_MIDI_CAPTURE

Especifica un flujo de entrada MIDI.

DMUS_STREAM_WAVE_SINK

Especifica un flujo de salida de onda.

Para obtener más información, vea la sección Comentarios que se muestra más adelante.

[in] DataFormat

Puntero a una estructura KSDATAFORMAT de streaming de kernel que especifica el formato de datos que se va a usar para esta instancia

[out] ServiceGroup

Puntero de salida para el grupo de servicios. Este parámetro apunta a una variable de puntero asignada por el autor de la llamada 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.

[in] AllocatorMXF

Puntero a un objeto IAllocatorMXF . Este es el asignador de memoria del controlador de puerto, que es necesario para reciclar DMUS_KERNEL_EVENT estructuras.

[in] MasterClock

Puntero a un objeto IMasterClock . Este reloj maestro pasa un contenedor para el reloj KS al controlador de minipuerto. El puntero del reloj maestro es necesario para sincronizarse con la hora de referencia.

[out] SchedulePreFetch

Puntero de salida para la hora de captura previa de programación. Este parámetro es un puntero a una variable de ULONGLONG asignada por el autor de la llamada en la que el método escribe un valor de hora que especifica el tiempo que se va a consultar para los eventos. La hora se especifica en unidades de 100 nanosegundos. El controlador de puerto es responsable de secuenciar cualquier evento que supere la cantidad de tiempo que especifica el controlador de miniporte aquí.

Valor devuelto

NewStream devuelve S_OK si la llamada se realizó correctamente. De lo contrario, el método devuelve un código de error adecuado.

Comentarios

Tenga en cuenta que el controlador de puerto crea el objeto IAllocatorMXF que el NewStream método introduce a través del parámetro pAllocatorMXF , pero el controlador de minipuerto crea el objeto IMXF que el método genera a través del parámetro ppMXF . Para obtener más información sobre IMXF e IAllocatorMXF, consulta Transporte MIDI.

El significado IMiniportDMus::NewStream del parámetro StreamType del método es similar al del parámetro Capture del método IMiniportMidi::NewStream:

  • Al crear una secuencia en un pin MIDI, el parámetro Capture del método IMiniportMidi::NewStream indica si el pin debe servir como receptor de una secuencia de representación MIDI (Capture = FALSE) o como origen de una secuencia de captura MIDI (Capture = TRUE).
  • Del mismo modo, al crear una secuencia en un pin MIDI o DirectMusic, el IMiniportDMus::NewStream parámetro StreamType del método puede indicar si el pin sirve como receptor para una secuencia de representación MIDI (StreamType = DMUS_STREAM_MIDI_RENDER) o como origen de una secuencia de captura MIDI (StreamType = DMUS_STREAM_MIDI_CAPTURE).
Sin embargo, un pin en un filtro DirectMusic puede admitir una tercera opción que no está disponible con un filtro MIDI. Un pin puede servir como origen de un flujo de salida de onda (StreamType = DMUS_STREAM_WAVE_SINK). El controlador de puerto DMus implementa el receptor de onda para esta secuencia. Después de crear el flujo de salida de onda, el controlador de puerto DMus consulta el objeto stream (que el controlador de puerto obtiene a través IMiniportDMus::NewStream del parámetro de salida ppMXF del método) para su interfaz ISynthSinkDMus . El receptor de ondas del controlador de puerto llama al método Render en esta interfaz para extraer datos de onda del sintetizador de software. Para obtener más información, vea A Wave Sink for Kernel-Mode Software Synthesizers.

Los parámetros ppMXF, pOuterUnknown, ppServiceGroup, pAllocatorMXF y pMasterClock siguen las convenciones de recuento de referencias para objetos COM.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado dmusicks.h (incluye Dmusicks.h)
IRQL PASSIVE_LEVEL

Consulte también

DMUS_KERNEL_EVENT

IAllocatorMXF

IMXF

IMasterClock

IMiniport::GetDescription

IMiniportDMus

IMiniportMidi::NewStream

IServiceGroup

ISynthSinkDMus

KSDATAFORMAT

POOL_TYPE