Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
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) {} };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 a chamada de retorno do mecanismo.
pXAudio2->RegisterForCallbacks( &engineCallback );Se já não precisas do retorno de chamada do mecanismo, chama IXAudio2::UnregisterForCallbacks.
pXAudio2->UnregisterForCallbacks( &engineCallback );
Tópicos relacionados