Freigeben über


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:

IMiniportdMus::Init

Initialisiert das Miniportobjekt.

IMiniportDMus::NewStream

Erstellt ein neues Streamobjekt.

IMiniportDMus::Service

Benachrichtigt den Miniporttreiber über eine Serviceanforderung.

Die Streamschnittstelle IMXF erbt die Methoden in der IUnknown-Schnittstelle . IMXF stellt die folgenden zusätzlichen Methoden bereit:

IMXF::ConnectOutput

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.

IMXF::D isconnectOutput

Trennt dieses Streamobjekt von der IMXF-Schnittstelle eines anderen Datenstromobjekts, das eine Datensenke ist.

IMXF::P utMessage

Übergibt eine DMUS_KERNEL_EVENT-Struktur an die Datensenke.

IMXF::SetState

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.

ISynthSinkDMus::Render

Rendert Wellendaten in einen Puffer für die Wellensenke.

ISynthSinkDMus::SampleToRefTime

Konvertiert eine Beispielzeit in eine Referenzzeit.

ISynthSinkdMus::SyncToMaster

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:

IPortDMus

IAllocatorMXF

IMasterClock

PortCls enthält einen integrierten DMus-Miniporttreiber für ein MIDI-Gerät mit UART-Funktion. Weitere Informationen finden Sie unter PcNewMiniport.