Freigeben über


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:

IMiniportWaveCyclic::Init

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.