DMus Miniport-Treiber
Ein DMus-Miniporttreiber verwaltet die hardwareabhängigen Funktionen erweiterter MIDI-Geräte. Diese Geräte unterstützen DirectMusic-Funktionen wie Precision Sequencer-Timing, herunterladbare Sounds (DLS) und Kanalgruppen. DMus-Miniporttreiber können mit Geräten wie MPU-401 eine hohe Leistung erzielen. Die Zeitsteuerung kann abhängig von den Funktionen der Hardware entweder vom Miniporttreiber oder vom Porttreiber verarbeitet werden. Ein DMus-Miniporttreiber kann auch einen Softwaresynthesizer unterstützen, der einen Wellenausgabestream generiert.
Ein DMus-Miniporttreiber für ein MIDI-Hardwaregerät sollte zwei Schnittstellen unterstützen:
Die Miniportschnittstelle initialisiert das Miniportobjekt und erstellt MIDI-Streams.
Die Stream-Schnittstelle verwaltet einen MIDI-Stream und macht die meisten Funktionen des Miniporttreibers verfügbar.
Die Miniportschnittstelle IMiniportDMus erbt die Methoden in der IMiniport-Schnittstelle . IMiniportDMus stellt die folgenden zusätzlichen Methoden bereit:
Initialisiert das Miniportobjekt.
Erstellt ein neues Streamobjekt.
Benachrichtigt den Miniporttreiber über eine Serviceanforderung.
Die Streamschnittstelle IMXF erbt die Methoden in der IUnknown-Schnittstelle . IMXF stellt die folgenden zusätzlichen Methoden bereit:
Verbindet dieses Streamobjekt, bei dem es sich um eine Datenquelle handelt, mit der IMXF-Schnittstelle eines anderen Streamobjekts, bei dem es sich um eine Datensenke handelt.
Trennt dieses Streamobjekt von der IMXF-Schnittstelle eines anderen Datenstromobjekts, das eine Datensenke ist.
Übergibt eine DMUS_KERNEL_EVENT-Struktur an die Datensenke.
Legt den Status des Datenstroms fest.
Darüber hinaus bietet die ISynthSinkDMus-Schnittstelle des DMus-Miniporttreibers DLS-Funktionen für Softwaresynthesizer. ISynthSinkDMus erbt die Methoden in der Basisschnittstelle IMXF. ISynthSinkDMus stellt die folgenden zusätzlichen Methoden bereit:
ISynthSinkdMus::RefTimeToSample
Konvertiert eine Referenzzeit in eine Beispielzeit.
Rendert Wellendaten in einen Puffer für die Wellensenke.
ISynthSinkDMus::SampleToRefTime
Konvertiert eine Beispielzeit in eine Referenzzeit.
Synchronisiert die Beispieluhr mit der master Uhr.
Die Wellensenke des Porttreibers ruft ISynthSinkDMus::Render auf, um die Wave-PCM-Daten zu lesen, die der Synthesizer aus seinem MIDI-Eingabestream generiert. Weitere Informationen zur Wellensenke finden Sie unter Eine Wellensenke für Kernel-Mode Softwaresynthesizer.
Der Miniporttreiber ruft die folgenden Schnittstellen für den DMus-Porttreiber auf:
PortCls enthält einen integrierten DMus-Miniporttreiber für ein MIDI-Gerät mit UART-Funktion. Weitere Informationen finden Sie unter PcNewMiniport.