Condividi tramite


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:

IMiniportDMus::Init

Inizializza l'oggetto miniport.

IMiniportDMus::NewStream

Crea un nuovo oggetto di flusso.

IMiniportDMus::Service

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:

IMXF::ConnectOutput

Connette questo oggetto di flusso, ovvero un'origine dati, all'interfaccia IMXF di un altro oggetto di flusso, ovvero un sink di dati.

IMXF::D isconnectOutput

Disconnette questo oggetto di flusso dall'interfaccia IMXF di un altro oggetto di flusso che è un sink di dati.

IMXF::P utMessage

Passa una struttura DMUS_KERNEL_EVENT al sink di dati.

IMXF::SetState

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.

ISynthSinkDMus::Rendering

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.

ISynthSinkDMus::SyncToMaster

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:

IPortDMus

IAllocatorMXF

IMasterClock

PortCls contiene un driver miniport DMus predefinito per un dispositivo MIDI con una funzione UART. Per altre informazioni, vedere PcNewMiniport.