Freigeben über


DMus Miniport-Treiber

Ein DMus Miniport-Treiber verwaltet die hardwareabhängigen Funktionen erweiterter MIDI-Geräte. Diese Geräte unterstützen DirectMusic-Funktionen, z. B. präzise Sequenzeranzeigedauer, herunterladbare Sounds (DLS) und Kanalgruppen. DMus Miniport-Treiber können hohe Leistung mit Geräten wie MPU-401 erzielen. Das Timing kann entweder vom Miniporttreiber oder vom Porttreiber behandelt werden, je nach den Fähigkeiten der Hardware. Ein DMus-Miniporttreiber kann auch einen Softwaresynthesizer unterstützen, der einen Wellenausgangsstrom 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 Streamschnittstelle 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 Serviceanfrage.

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

IMXF::ConnectOutput

Verbindet dieses Datenstromobjekt, bei dem es sich um eine Datenquelle handelt, mit der IMXF-Schnittstelle eines anderen Datenstromobjekts, bei dem es sich um eine Datensenke handelt.

IMXF::DisconnectOutput

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

IMXF::PutMessage

Ü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 miniport-Treibers 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 Wellenspüle.

ISynthSinkDMus::SampleToRefTime

Konvertiert eine Beispielzeit in eine Referenzzeit.

ISynthSinkDMus::SyncToMaster

Synchronisiert die Beispieluhr mit der Masteruhr.

Die Wellenspüle des Porttreibers ruft ISynthSinkDMus::Render auf, um die Wave PCM-Daten zu lesen, die der Synthesizer aus seinem MIDI-Eingabedatenstrom generiert. Weitere Informationen über den "Wave Sink" finden Sie in "Ein Wave Sink für Kernel-Mode Software-Synthesizer".

Der Miniporttreiber ruft die folgenden Schnittstellen auf dem DMus-Porttreiber auf:

IPortDMus

IAllocatorMXF

IMasterClock

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