Поделиться через


WaveCyclic Miniport Driver

Важно Использование WavePci больше не рекомендуется, вместо этого используйте WaverRT.

Драйвер miniport WaveCyclic управляет аппаратно-зависимыми функциями устройства отрисовки или захвата волн, которое использует циклический буфер для звуковых данных. Циклический буфер обычно представляет собой один блок непрерывной физической памяти и может находиться в области памяти по выбору драйвера. Устройство с любым из следующих ограничений должно предоставлять драйвер miniport WaveCyclic, а не драйвер miniport WavePci:

  • На устройстве отсутствует оборудование DMA.

  • Оборудование DMA устройства может получить доступ к данным только в буфере, который занимает один блок непрерывной физической памяти.

  • Оборудование DMA устройства не может получить доступ к данным во всех регионах физической памяти.

Драйвер miniport WaveCyclic должен реализовывать два интерфейса:

  • Интерфейс мини-порта поддерживает инициализацию драйвера мини-порта и создание потоков.

  • Интерфейс потока управляет потоком волн и предоставляет большую часть функциональных возможностей драйвера мини-порта.

Интерфейс мини-порта IMiniportWaveCyclic наследует методы в интерфейсе IMiniport . IMiniportWaveCyclic предоставляет следующие дополнительные методы:

IMiniportWaveCyclic::Init

Инициализирует объект miniport.

IMiniportWaveCyclic::NewStream

Создает новый объект потока.

Интерфейс потока IMiniportWaveCyclicStream наследует методы в интерфейсе IUnknown . IMiniportWaveCyclicStream предоставляет следующие дополнительные методы:

IMiniportWaveCyclicStream::GetPosition

Возвращает текущее положение устройства в потоке волн.

IMiniportWaveCyclicStream::NormalizePhysicalPosition

Преобразует физическое значение позиции буфера в значение на основе времени.

IMiniportWaveCyclicStream::SetFormat

Задает формат данных волнового потока.

IMiniportWaveCyclicStream::SetNotificationFreq

Задает частоту прерываний уведомлений.

IMiniportWaveCyclicStream::SetState

Задает состояние потока волн.

IMiniportWaveCyclicStream::Silence

Копирует тишину в буфер.