Como: Usar retornos de chamadas de dispositivo

Você pode notificar o código de cliente XAudio2 de eventos do mecanismo registrando uma instância de uma classe implementando a interface IXAudio2EngineCallback com o mecanismo XAudio2. Isso permite que o código do cliente XAudio2 acompanhe quando o processamento de áudio está ocorrendo e quando reiniciar o mecanismo em caso de erro crítico.

Para usar um retorno de chamada do mecanismo

As etapas a seguir registram um objeto para lidar com eventos do mecanismo.

  1. Crie uma classe que herda da interface IXAudio2EngineCallback .

    Todos os métodos de IXAudio2EngineCallback são puramente virtuais e devem ser definidos. O método de interesse neste exemplo é IXAudio2EngineCallback::OnCriticalError, que define um sinalizador para sinalizar o loop de jogo main que ocorreu um erro crítico. Os métodos restantes, IXAudio2EngineCallback::OnProcessingPassStart e IXAudio2EngineCallback::OnProcessingPassEnd, são stubs neste exemplo.

    class EngineCallback : public IXAudio2EngineCallback
    {
        void OnProcessingPassEnd () {}
        void OnProcessingPassStart() {}
        void OnCriticalError (HRESULT Error) {}
    };
    
  2. Use XAudio2Create para criar uma instância do mecanismo XAudio2.

    if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )
        return hr;
    
  3. Use IXAudio2::RegisterForCallbacks para registrar o retorno de chamada do mecanismo.

    pXAudio2->RegisterForCallbacks( &engineCallback );
    
  4. Se você não precisar mais do retorno de chamada do mecanismo, chame IXAudio2::UnregisterForCallbacks.

    pXAudio2->UnregisterForCallbacks( &engineCallback );
    

Retornos de chamada

Retorno de chamadas XAudio2

Guia de Programação em XAudio2

Como: Compilar um gráfico de processamento de áudio básico

Como: Fazer o streaming de um som do disco