DMus-Porttreiber

Der DMus-Porttreiber verwaltet einen Microsoft DirectMusic-Synthesizer oder ein Erfassungsgerät. Im Gegensatz zum MIDI-Porttreiber, der nur einfache MIDI-Geräte unterstützt, unterstützt der DMus-Porttreiber Geräte mit erweiterten MIDI-Funktionen wie Präzises Sequenzer-Timing, herunterladbare Sounds (DLS) und Kanalgruppen. Der Adaptertreiber implementiert einen entsprechenden DMus-Miniporttreiber , der an den DMus-Porttreiber gebunden ist, um einen DirectMusic-Filter zu bilden (siehe MIDI- und DirectMusic-Filter), der einen MIDI-Stream rendern oder erfassen kann.

Der DMus-Porttreiber macht eine IPortDMus-Schnittstelle für den Miniporttreiber verfügbar. IPortDMus erbt die Methoden in der Basisschnittstelle IPort. IPortDMus stellt die folgenden zusätzlichen Methoden bereit:

IPortDMus::Notify

Benachrichtigt den Porttreiber, dass der MIDI-Synthesizer oder das Aufnahmegerät an eine neue Position im MIDI-Stream vorgerückt ist.

IPortDMus::RegisterServiceGroup

Registriert ein Dienstgruppenobjekt beim Porttreiber. Die registrierte Dienstgruppe enthält eine Liste mit mindestens einer Dienstroutine, die vom Porttreiber aufgerufen werden, wenn der Miniporttreiber Notify aufruft. Weitere Informationen finden Sie unter Dienstsenke und Dienstgruppenobjekte.

Der DMus-Porttreiber erstellt auch einen Speicherzuteilungsator für jeden Stream und macht die IAllocatorMXF-Schnittstelle des Zuteilungsobjekts dem Streamobjekt des Miniporttreibers verfügbar. IAllocatorMXF erbt die Methoden in der Basisschnittstelle IMXF. IAllocatorMXF stellt die folgenden zusätzlichen Methoden bereit:

IAllocatorMXF::GetBuffer

Ruft einen Puffer für ein MIDI-Ereignis oder eine Liste von Ereignissen ab, die zu groß ist, um in eine DMUS_KERNEL_EVENT-Struktur zu passen.

IAllocatorMXF::GetBufferSize

Ruft die Größe des Puffers in Bytes ab, der von der GetBuffer-Methode abgerufen wird.

IAllocatorMXF::GetMessage

Ruft einen Nachrichtenpuffer ab, der Speicher für eine einzelne Struktur vom Typ DMUS_KERNEL_EVENT enthält.

IAllocatorMXF::P utBuffer

Wird nicht verwendet. Die DMus-Port- und Miniporttreiberobjekte kommunizieren miteinander über ihre jeweiligen IPortDMus - und IMiniportMidi-Schnittstellen . Darüber hinaus kommuniziert der Porttreiber über seine IMXF-Schnittstellen mit den Streamobjekten des Miniporttreibers, und das Streamobjekt eines Miniporttreibers kommuniziert mit dem Zuordnungselement des Porttreibers über seine IAllocatorMXF-Schnittstelle .

Weitere Informationen zur Treiberunterstützung für DirectMusic finden Sie unter Übersicht über Synthesizer Miniport-Treiber.

In Windows XP und höher werden die IPortDMus - und IPortMidi-Schnittstellen in einem einzelnen internen Treibermodul implementiert. Diese Konsolidierung wird durch die Ähnlichkeit dieser beiden Schnittstellen erleichtert. Beispielsweise werden dieselben Methoden für beide Schnittstellen definiert. Für Anwendungen, die für frühere Versionen von Windows geschrieben wurden, sollte sich das Verhalten der IPortMidi - und IPortDMus-Schnittstellen aufgrund der Konsolidierung der MIDI- und DMus-Porttreiber nicht ändern.