Partilhar via


Driver de miniporta WaveCyclic

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

Um driver de miniporta WaveCyclic gerencia as funções dependentes de hardware de um dispositivo de renderização ou 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 ser localizado em uma região de memória da escolha do motorista. Um dispositivo com qualquer uma das seguintes limitações deve fornecer um driver de miniporta WaveCyclic em vez de um driver de miniporta WavePci:

  • O dispositivo não tem hardware 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 aceder a dados em todas as regiões da memória física.

Um driver de miniporta WaveCyclic deve implementar duas interfaces:

  • A interface de miniporta suporta inicialização de driver de miniporta e criação de fluxo.

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

A interface de miniporta, 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 stream.

A interface de fluxo, 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 onda.

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 onda.

IMiniportWaveCyclicStream::SetNotificationFreq

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

IMiniportWaveCyclicStream::SetState

Define o estado do fluxo de onda.

IMiniportWaveCyclicStream::Silêncio

Copia o silêncio para um buffer.