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