Compartilhar via


Driver de Miniporta WaveCyclic

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 onda ou de captura de onda 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 que possua qualquer uma das seguintes limitações deve utilizar um driver de miniporto WaveCyclic em vez de um driver de miniporto WavePci:

  • O dispositivo não tem hardware de DMA.

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

  • O hardware 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 miniport dá suporte à inicialização do driver miniport e à criação de stream.

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

A interface miniport, IMiniportWaveCyclic, herda os métodos da 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 transmissão, IMiniportWaveCyclicStream, herda os métodos da 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 na qual ocorrem interrupções de notificação.

IMiniportWaveCyclicStream::SetState

Define o estado do fluxo de ondas.

IMiniportWaveCyclicStream::Silence

Copia o silêncio em um buffer.