Compartilhar via


Driver de porta DMus

O driver de porta DMus gerencia um sintetizador ou dispositivo de captura do Microsoft DirectMusic. Em contraste com o 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 de sequenciador de precisão, DLS (sons para download) 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 do DirectMusic (consulte filtros MIDI e DirectMusic) que pode renderizar ou capturar um fluxo MIDI.

O driver de porta DMus expõe uma interface IPortDMus ao driver de miniporto. IPortDMus herda os métodos da interface base em IPort. O IPortDMus fornece os seguintes métodos adicionais:

IPortDMus::Notify

Notifica o driver de porta 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 Objetos do Coletor de Serviço e do 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 desse alocador ao objeto de fluxo do driver de miniport. IAllocatorMXF herda os métodos na interface base IMXF. O IAllocatorMXF fornece os seguintes métodos adicionais:

IAllocatorMXF::GetBuffer

Obtém um buffer para um evento MIDI ou uma lista de eventos que é muito grande para caber em uma estrutura DMUS_KERNEL_EVENT.

IAllocatorMXF::GetBufferSize

Obtém o tamanho em bytes do buffer recuperado pelo método GetBuffer .

IAllocatorMXF::GetMessage

Obtém um buffer de mensagem que contém armazenamento para uma única estrutura do tipo DMUS_KERNEL_EVENT.

IAllocatorMXF::PutBuffer

Não usado. Os objetos de driver de porta e miniporta do DMus se comunicam entre si por meio de suas respectivas interfaces IPortDMus e IMiniportMidi. Além disso, o driver da porta se comunica com os objetos de stream do driver de miniporta por meio de suas interfaces IMXF, e o objeto de stream de um miniporta se comunica com o alocador do driver da porta por meio de sua interface IAllocatorMXF.

Para obter mais informações sobre o suporte ao driver para DirectMusic, consulte Synthesizer Miniport Driver Overview.

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 semelhança dessas duas interfaces. Por exemplo, os mesmos métodos são definidos para ambas as interfaces. Os aplicativos gravados 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.