DMus Miniport Driver
Un driver miniport DMus gestisce le funzioni dipendenti dall'hardware dei dispositivi MIDI avanzati. Questi dispositivi supportano funzionalità DirectMusic, ad esempio tempi di sequenza di precisione, suoni scaricabili (DLS) e gruppi di canali. I driver miniport DMus possono ottenere prestazioni elevate con dispositivi come MPU-401. La tempistica può essere gestita dal driver miniport o dal driver di porta, a seconda delle funzionalità dell'hardware. Un driver miniport DMus può supportare anche un sintetizzatore software che genera un flusso di output dell'onda.
Un driver miniport DMus per un dispositivo hardware MIDI deve supportare due interfacce:
L'interfaccia miniport inizializza l'oggetto miniport e crea flussi MIDI.
L'interfaccia di flusso gestisce un flusso MIDI ed espone la maggior parte delle funzionalità del driver miniport.
L'interfaccia miniport, IMiniportDMus, eredita i metodi nell'interfaccia IMiniport . IMiniportDMus fornisce i metodi aggiuntivi seguenti:
Inizializza l'oggetto miniport.
Crea un nuovo oggetto di flusso.
Notifica al driver miniport di una richiesta di servizio.
L'interfaccia di flusso, IMXF, eredita i metodi nell'interfaccia IUnknown . IMXF fornisce i metodi aggiuntivi seguenti:
Connette questo oggetto di flusso, ovvero un'origine dati, all'interfaccia IMXF di un altro oggetto di flusso, ovvero un sink di dati.
Disconnette questo oggetto di flusso dall'interfaccia IMXF di un altro oggetto di flusso che è un sink di dati.
Passa una struttura DMUS_KERNEL_EVENT al sink di dati.
Imposta lo stato del flusso.
Inoltre, l'interfaccia ISynthSinkDMus del driver DMus offre funzionalità DLS per i sintetizzatori software. ISynthSinkDMus eredita i metodi nell'interfaccia di base IMXF. ISynthSinkDMus fornisce i metodi aggiuntivi seguenti:
ISynthSinkDMus::RefTimeToSample
Converte un'ora di riferimento in un'ora di esempio.
Esegue il rendering dei dati dell'onda in un buffer per il sink di onda.
ISynthSinkDMus::SampleToRefTime
Converte un'ora di esempio in un'ora di riferimento.
Sincronizza l'orologio di esempio nell'orologio master.
Il sink dell'onda del driver di porta chiama ISynthSinkDMus::Render per leggere i dati PCM wave generati dal flusso di input MIDI. Per altre informazioni sul sink a onda, vedere Un sink wave per Kernel-Mode sintetizzatori software.
Il driver miniport chiama le interfacce seguenti sul driver di porta DMus:
PortCls contiene un driver miniport DMus predefinito per un dispositivo MIDI con una funzione UART. Per altre informazioni, vedere PcNewMiniport.