Compartir a través de


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

El método NewStream 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 a la interfaz IMXF del objeto de secuencia.

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

[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 de miniporte DMus genera un descriptor de filtro que especifica un total de n generadores de patillas en el filtro, los identificadores de pin válidos están 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 valores de enumeración de DMUS_STREAM_TYPE:

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 siguiente sección Comentarios.

[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 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.

[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 miniport. El puntero del reloj maestro es necesario para sincronizar 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 ULONGLONG asignada por el autor de la llamada en la que el método escribe un valor de hora que especifica cuánto se va a consultar para los eventos. El tiempo se especifica en unidades de 100 nanosegundos. El controlador de puerto es responsable de secuenciar los eventos que superen la cantidad de tiempo que el controlador de miniporte especifica 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.

Observaciones

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 miniporta 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 obtiene el controlador de puerto a través IMiniportDMus::NewStream del parámetro de salida ppMXF del método) para su interfaz ISynthSinkDMus . El receptor de onda 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 Un receptor de onda para Kernel-Mode sintetizadores de software.

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

Requisitos

Requisito Valor
de la plataforma de destino de 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