Driver de porta DMus
O driver de porta DMus gerencia um sintetizador ou dispositivo de captura do Microsoft DirectMusic. Ao contrário do driver de porta MIDI, que dá suporte apenas a dispositivos MIDI simples, o driver de porta DMus dá suporte a dispositivos com funcionalidades MIDI avançadas, como tempo do sequenciador de precisão, DLS (sons baixáveis) e grupos de canais. O driver do adaptador implementa um driver de miniporto DMus correspondente que se associa ao driver de porta DMus para formar um filtro DirectMusic (consulte Filtros MIDI e DirectMusic) que pode renderizar ou capturar um fluxo MIDI.
O driver de porta DMus expõe uma interface IPortDMus para o driver de miniporto. IPortDMus herda os métodos na interface base IPort. IPortDMus fornece os seguintes métodos adicionais:
Notifica o driver de porta de que o sintetizador midi ou dispositivo de captura avançou para uma nova posição no fluxo MIDI.
IPortDMus::RegisterServiceGroup
Registra um objeto de grupo de serviços com o driver de porta. O grupo de serviços registrado contém uma lista de uma ou mais rotinas de serviço que são chamadas pelo driver de porta quando o driver de miniporto chama Notify; para obter mais informações, consulte Coletor de Serviço e Objetos de Grupo de Serviços.
O driver de porta DMus também cria um alocador de memória para cada fluxo e expõe a interface IAllocatorMXF do alocador para o objeto de fluxo do driver de miniport. IAllocatorMXF herda os métodos na interface base IMXF. IAllocatorMXF fornece os seguintes métodos adicionais:
Obtém um buffer para um evento MIDI ou uma lista de eventos muito grandes para caber em uma estrutura DMUS_KERNEL_EVENT .
Obtém o tamanho em bytes do buffer recuperado pelo método GetBuffer .
Obtém um buffer de mensagem que contém armazenamento para uma única estrutura do tipo DMUS_KERNEL_EVENT.
Não usado. Os objetos de porta DMus e de driver de miniporto se comunicam entre si por meio de suas respectivas interfaces IPortDMus e IMiniportMidi . Além disso, o driver de porta se comunica com os objetos de fluxo do driver de miniport por meio de suas interfaces IMXF , e o objeto de fluxo de um driver de miniporto se comunica com o alocador do driver de porta por meio de sua interface IAllocatorMXF .
Para obter mais informações sobre o suporte de driver para DirectMusic, consulte Visão geral do driver do Synthesizer Miniport.
No Windows XP e posterior, as interfaces IPortDMus e IPortMidi são implementadas em um único módulo de driver interno. Essa consolidação é facilitada pela similaridade dessas duas interfaces. Por exemplo, os mesmos métodos são definidos para ambas as interfaces. Os aplicativos escritos para versões anteriores do Windows não devem ver nenhuma alteração no comportamento das interfaces IPortMidi e IPortDMus resultantes da consolidação dos drivers de porta MIDI e DMus.