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.
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) {} };
Use XAudio2Create para criar uma instância do mecanismo XAudio2.
if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) ) return hr;
Use IXAudio2::RegisterForCallbacks para registrar o retorno de chamada do mecanismo.
pXAudio2->RegisterForCallbacks( &engineCallback );
Se você não precisar mais do retorno de chamada do mecanismo, chame IXAudio2::UnregisterForCallbacks.
pXAudio2->UnregisterForCallbacks( &engineCallback );
Tópicos relacionados