Partilhar via


Motorista Portuário 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 suporta apenas dispositivos MIDI simples, o driver de porta DMus suporta dispositivos com recursos MIDI avançados, como temporização do sequenciador de precisão, sons para download (DLS) e grupos de canais. O driver do adaptador implementa um driver de miniporta DMus correspondente que se liga 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 miniporta. IPortDMus herda os métodos na interface base IPort. IPortDMus fornece os seguintes métodos adicionais:

IPortDMus::Notificar

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 registado contém uma lista de uma ou mais rotinas de serviço que são chamadas pelo driver de porta quando o driver de miniporta chama Notify; para obter mais informações, consulte Coletor de serviço e objetos de grupo de serviço.

O driver de porta DMus também cria um alocador de memória para cada fluxo e expõe a interface IAllocatorMXF do alocador ao objeto de fluxo do driver de miniporta. IAllocatorMXF herda os métodos na interface base IMXF. 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 mensagens contendo armazenamento para uma única estrutura do tipo DMUS_KERNEL_EVENT.

IAllocatorMXF::PutBuffer

Não utilizado. Os objetos de driver de porta DMus e miniporta comunicam entre si por meio de suas respetivas interfaces IPortDMus e IMiniportMidi. Além disso, o controlador de porta comunica-se com os objetos de fluxo de dados do controlador de miniporta através das suas interfaces IMXF, e um objeto de fluxo de dados de um controlador de miniporta comunica-se com o alocador do controlador de porta através da sua interface IAllocatorMXF.

Para obter mais informações sobre o suporte de driver para DirectMusic, consulte Visão geral do driver de miniporta de sintetizador.

No Windows XP e versões posteriores, as interfaces IPortDMus e IPortMidi são implementadas em um único módulo de driver interno. Esta consolidação é facilitada pela semelhança destas 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.