WaveCyclic Miniport Driver

Importante O uso de WavePci não é mais recomendado, em vez disso, use WaverRT.

Um driver de miniporto WaveCyclic gerencia as funções dependentes de hardware de um dispositivo de renderização de ondas ou de captura de ondas que usa um buffer cíclico para dados de áudio. O buffer cíclico normalmente é um único bloco de memória física contígua e pode estar localizado em uma região de memória da escolha do driver. Um dispositivo com qualquer uma das seguintes limitações deve fornecer um driver de miniporta WaveCyclic em vez de um driver de miniporto WavePci:

  • O dispositivo não tem hardware de AMD.

  • O hardware de DMA do dispositivo pode acessar dados somente em um buffer que ocupa um único bloco de memória física contígua.

  • O hardware de DMA do dispositivo não consegue acessar dados em todas as regiões da memória física.

Um driver de miniporto WaveCyclic deve implementar duas interfaces:

  • A interface de miniporta dá suporte à inicialização do driver de miniporto e à criação de fluxo.

  • A interface de fluxo gerencia um fluxo de ondas e expõe a maior parte da funcionalidade do driver de miniport.

A interface de miniport, IMiniportWaveCyclic, herda os métodos na interface IMiniport . IMiniportWaveCyclic fornece os seguintes métodos adicionais:

IMiniportWaveCyclic::Init

Inicializa o objeto miniport.

IMiniportWaveCyclic::NewStream

Cria um novo objeto de fluxo.

A interface de fluxo, IMiniportWaveCyclicStream, herda os métodos na interface IUnknown . IMiniportWaveCyclicStream fornece os seguintes métodos adicionais:

IMiniportWaveCyclicStream::GetPosition

Obtém a posição atual do dispositivo no fluxo de ondas.

IMiniportWaveCyclicStream::NormalizePhysicalPosition

Converte um valor de posição de buffer físico em um valor baseado em tempo.

IMiniportWaveCyclicStream::SetFormat

Define o formato de dados do fluxo de ondas.

IMiniportWaveCyclicStream::SetNotificationFreq

Define a frequência com que ocorrem interrupções de notificação.

IMiniportWaveCyclicStream::SetState

Define o estado do fluxo de ondas.

IMiniportWaveCyclicStream::Silence

Copia o silêncio em um buffer.