Freigeben über


WaveCyclic-Miniport-Treiber

Wichtig Die Verwendung von WavePci wird nicht mehr empfohlen, anstatt WaverRT zu verwenden.

Ein WaveCyclic Miniport-Treiber 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 zusammenhängenden physischen Speichers und kann sich nach Wahl des Treibers in einem Speicherbereich befinden. Ein Gerät mit einer der folgenden Einschränkungen sollte einen WaveCyclic Miniport-Treiber anstelle eines WavePci Miniport-Treibers bereitstellen:

  • Das Gerät verfügt nicht über DMA-Hardware.

  • Die DMA-Hardware des Geräts kann nur in einem Puffer auf Daten zugreifen, die einen einzelnen Block zusammenhängenden physischen Speichers belegen.

  • Die DMA-Hardware des Geräts kann nicht auf Daten in allen Bereichen des physischen Speichers zugreifen.

Ein WaveCyclic Miniporttreiber sollte zwei Schnittstellen implementieren:

  • Die Miniportschnittstelle unterstützt die Miniporttreiberinitialisierung und datenstromerstellung.

  • Die Datenstromschnittstelle verwaltet einen Wellenstrom und macht die meisten Funktionen des Miniporttreibers verfügbar.

Die Miniportschnittstelle IMiniportWaveCyclic erbt die Methoden in der IMiniport-Schnittstelle . IMiniportWaveCyclic stellt die folgenden zusätzlichen Methoden bereit:

IMiniportWaveCyclic::Init

Initialisiert das Miniportobjekt.

IMiniportWaveCyclic::NewStream

Erstellt ein neues Streamobjekt.

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

IMiniportWaveCyclicStream::GetPosition

Ruft die aktuelle Position des Geräts im Wellenstrom ab.

IMiniportWaveCyclicStream::NormalizePhysicalPosition

Wandelt einen physischen Pufferpositionswert in einen zeitbasierten Wert um.

IMiniportWaveCyclicStream::SetFormat

Legt das Datenformat des Wellenstroms fest.

IMiniportWaveCyclicStream::SetNotificationFreq

Legt die Häufigkeit fest, mit der Benachrichtigungsunterbrechungen auftreten.

IMiniportWaveCyclicStream::SetState

Legt den Zustand des Wellenstroms fest.

IMiniportWaveCyclicStream::Silence

Kopiert Stille in einen Puffer.