Compartir a través de


Controlador de puerto DMus

El controlador de puerto DMus administra un sintetizador o un dispositivo de captura de Microsoft DirectMusic. A diferencia del controlador de puerto MIDI, que solo admite dispositivos MIDI simples, el controlador de puerto DMus admite dispositivos con funcionalidades MIDI avanzadas, como el control de tiempo del secuenciador de precisión, los sonidos descargables (DLS) y los grupos de canales. El controlador del adaptador implementa un controlador de minipuerto DMus correspondiente que se enlaza al controlador de puerto DMus para formar un filtro DirectMusic (consulta MIDI y Filtros DirectMusic) que puede reproducir o capturar una secuencia MIDI.

El controlador de puerto DMus expone una interfaz IPortDMus al controlador de minipuerto. IPortDMus hereda los métodos de la interfaz base IPort. IPortDMus proporciona los siguientes métodos adicionales:

IPortDMus::Notify

Notifica al controlador de puerto que el sintetizador MIDI o el dispositivo de captura han avanzado a una nueva posición en la secuencia MIDI.

IPortDMus::RegisterServiceGroup

Registra un objeto de grupo de servicios con el controlador de puerto. El grupo de servicios registrado contiene una lista de una o varias rutinas de servicio a las que llama el controlador de puerto cuando el controlador miniport llama a Notify; para obtener más información, vea Objetos de grupo de servicio y receptor de servicio.

El controlador de puerto DMus también crea un asignador de memoria para cada flujo y expone la interfaz IAllocatorMXF del asignador al objeto flujo del controlador de miniport. IAllocatorMXF hereda los métodos de la interfaz base IMXF. IAllocatorMXF proporciona los siguientes métodos adicionales:

IAllocatorMXF::GetBuffer

Obtiene un búfer para un evento MIDI o una lista de eventos que son demasiado grandes para caber dentro de una estructura DMUS_KERNEL_EVENT.

IAllocatorMXF::GetBufferSize

Obtiene el tamaño en bytes del búfer recuperado por el método GetBuffer .

IAllocatorMXF::GetMessage

Obtiene un búfer de mensajes que contiene almacenamiento para una única estructura de tipo DMUS_KERNEL_EVENT.

IAllocatorMXF::PutBuffer

No se usa. Los objetos DMus port y miniport driver se comunican entre sí a través de sus respectivas interfaces IPortDMus e IMiniportMidi . Además, el controlador de puerto se comunica con los objetos de secuencia del controlador de miniporte a través de sus interfaces IMXF y un objeto de secuencia del controlador de miniporte se comunica con el asignador del controlador de puerto a través de su interfaz IAllocatorMXF .

Para obtener más información sobre la compatibilidad con controladores para DirectMusic, consulta Información general sobre el controlador de miniportador de sintetizador.

En Windows XP y versiones posteriores, las interfaces IPortDMus e IPortMidi se implementan en un único módulo de controlador interno. Esta consolidación se facilita mediante la similitud de estas dos interfaces. Por ejemplo, los mismos métodos se definen para ambas interfaces. Las aplicaciones escritas para versiones anteriores de Windows no deberían ver ningún cambio en el comportamiento de las interfaces IPortMidi e IPortDMus resultantes de la consolidación de los controladores de puerto MIDI y DMus.