Compartir a través de


Controlador de puerto DMus

El controlador de puerto DMus administra un sintetizador o 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 la sincronización del secuenciador de precisión, los sonidos descargables (DLS) y los grupos de canales. El controlador del adaptador implementa un controlador DMus miniport correspondiente que se enlaza al controlador de puerto DMus para formar un filtro DirectMusic (consulta Filtros MIDI y DirectMusic) que puede representar 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 de minipuerto 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 secuencia y expone la interfaz IAllocatorMXF del asignador al objeto de secuencia del controlador de minipuerto. 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 es demasiado grande para caber dentro de una estructura de 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::P utBuffer

No se usa. El puerto DMus y los objetos del controlador de minipuerto 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 flujo del controlador de minipuerto a través de sus interfaces IMXF y un objeto de flujo 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 de controladores con DirectMusic, consulta Información general del controlador de miniportador 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, se definen los mismos métodos 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.