Partilhar via


Como usar retornos de chamada do mecanismo

Você pode notificar o código do cliente XAudio2 sobre eventos do motor ao registar uma instância de uma classe que implementa a interface IXAudio2EngineCallback no motor XAudio2. Isso permite que o código do cliente XAudio2 acompanhe quando o processamento de áudio está ocorrendo e quando reiniciar o mecanismo no caso de um erro crítico.

Para usar um retorno de chamada do mecanismo

Os passos a seguir registam 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 ao loop principal do jogo 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 a chamada de retorno do mecanismo.

    pXAudio2->RegisterForCallbacks( &engineCallback );
    
  4. Se já não precisas do retorno de chamada do mecanismo, chama IXAudio2::UnregisterForCallbacks.

    pXAudio2->UnregisterForCallbacks( &engineCallback );
    

Retornos de chamada

Retornos de Chamada XAudio2

Guia de Programação XAudio2

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

Como fazer streaming de som a partir do disco