Cómo: usar devoluciones de llamadas de motores

Puede notificar al código de cliente XAudio2 de eventos del motor registrando una instancia de una clase que implementa la interfaz IXAudio2EngineCallback con el motor XAudio2. Esto permite que el código de cliente XAudio2 realice un seguimiento de cuándo se está produciendo el procesamiento de audio y cuándo reiniciar el motor en caso de un error crítico.

Para usar una devolución de llamada del motor

En los pasos siguientes se registra un objeto para controlar los eventos del motor.

  1. Cree una clase que herede de la interfaz IXAudio2EngineCallback .

    Todos los métodos de IXAudio2EngineCallback son puramente virtuales y deben definirse. El método de interés en este ejemplo es IXAudio2EngineCallback::OnCriticalError, que establece una marca para indicar el bucle principal del juego que se ha producido un error crítico. Los métodos restantes, IXAudio2EngineCallback::OnProcessingPassStart y IXAudio2EngineCallback::OnProcessingPassEnd, son códigos auxiliares en este ejemplo.

    class EngineCallback : public IXAudio2EngineCallback
    {
        void OnProcessingPassEnd () {}
        void OnProcessingPassStart() {}
        void OnCriticalError (HRESULT Error) {}
    };
    
  2. Use XAudio2Create para crear una instancia del motor XAudio2.

    if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )
        return hr;
    
  3. Use IXAudio2::RegisterForCallbacks para registrar la devolución de llamada del motor.

    pXAudio2->RegisterForCallbacks( &engineCallback );
    
  4. Si aún no necesita la devolución de llamada del motor, llame a IXAudio2::UnregisterForCallbacks.

    pXAudio2->UnregisterForCallbacks( &engineCallback );
    

Devoluciones de llamada

Devoluciones de llamadas de XAudio2

Guía de programación de XAudio2

Cómo: crear un gráfico de procesamiento de audio básico

Cómo: transmitir un sonido de un disco