WaveCyclic Miniport-Treiber
Wichtig Die Verwendung von WavePci wird nicht mehr empfohlen, stattdessen verwenden Sie WaverRT.
Ein WaveCyclic-Miniporttreiber verwaltet die hardwareabhängigen Funktionen eines Wave-Rendering- oder Wave-Capture-Geräts, das einen zyklischen Puffer für Audiodaten verwendet. Der zyklische Puffer ist in der Regel ein einzelner Block von zusammenhängendem physischem Speicher und kann sich in einem Bereich des Arbeitsspeichers befinden, der vom Treiber gewählt wird. Ein Gerät mit einer der folgenden Einschränkungen sollte einen WaveCyclic-Miniporttreiber anstelle eines WavePci-Miniporttreibers bereitstellen:
Auf dem Gerät fehlt DMA-Hardware.
Die DMA-Hardware des Geräts kann nur auf Daten in einem Puffer zugreifen, der einen einzelnen Block zusammenhängenden physischen Arbeitsspeichers einnimmt.
Die DMA-Hardware des Geräts kann nicht auf Daten in allen Regionen des physischen Arbeitsspeichers zugreifen.
Ein WaveCyclic-Miniporttreiber sollte zwei Schnittstellen implementieren:
Die Miniportschnittstelle unterstützt die Initialisierung des Miniporttreibers und die Datenstromerstellung.
Die Streamschnittstelle verwaltet einen Wellenstrom und macht die meisten Funktionen des Miniporttreibers verfügbar.
Die Miniportschnittstelle IMiniportWaveCyclic erbt die Methoden in der IMiniport-Schnittstelle . IMiniportWaveCyclic bietet die folgenden zusätzlichen Methoden:
Initialisiert das Miniportobjekt.
IMiniportWaveCyclic::NewStream
Erstellt ein neues Streamobjekt.
Die Streamschnittstelle IMiniportWaveCyclicStream erbt die Methoden in der IUnknown-Schnittstelle . IMiniportWaveCyclicStream bietet die folgenden zusätzlichen Methoden:
IMiniportWaveCyclicStream::GetPosition
Ruft die aktuelle Position des Geräts im Wellenstream ab.
IMiniportWaveCyclicStream::NormalizePhysicalPosition
Konvertiert einen physischen Pufferpositionswert in einen zeitbasierten Wert.
IMiniportWaveCyclicStream::SetFormat
Legt das Datenformat des Wellendatenstroms fest.
IMiniportWaveCyclicStream::SetNotificationFreq
Legt die Häufigkeit fest, mit der Benachrichtigungsunterbrechungen auftreten.
IMiniportWaveCyclicStream::SetState
Legt den Zustand des Wellenstroms fest.
IMiniportWaveCyclicStream::Silence
Kopiert die Stille in einen Puffer.