Procedura: Usare callback del motore

È possibile inviare una notifica al codice client XAudio2 degli eventi del motore registrando un'istanza di una classe che implementa l'interfaccia IXAudio2EngineCallback con il motore XAudio2. Ciò consente al codice client XAudio2 di tenere traccia del momento in cui si verifica l'elaborazione audio e quando riavviare il motore in caso di errore critico.

Per usare un callback del motore

I passaggi seguenti registrano un oggetto per gestire gli eventi del motore.

  1. Creare una classe che eredita dall'interfaccia IXAudio2EngineCallback .

    Tutti i metodi di IXAudio2EngineCallback sono puramente virtuali e devono essere definiti. Il metodo di interesse in questo esempio è IXAudio2EngineCallback::OnCriticalError, che imposta un flag per segnalare il ciclo principale del gioco che si è verificato un errore critico. I metodi rimanenti IXAudio2EngineCallback::OnProcessingPassStart e IXAudio2EngineCallback::OnProcessingPassEnd sono stub in questo esempio.

    class EngineCallback : public IXAudio2EngineCallback
    {
        void OnProcessingPassEnd () {}
        void OnProcessingPassStart() {}
        void OnCriticalError (HRESULT Error) {}
    };
    
  2. Usare XAudio2Create per creare un'istanza del motore XAudio2.

    if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )
        return hr;
    
  3. Usare IXAudio2::RegisterForCallbacks per registrare il callback del motore.

    pXAudio2->RegisterForCallbacks( &engineCallback );
    
  4. Se il callback del motore non è più necessario, chiama IXAudio2::UnregisterForCallbacks.

    pXAudio2->UnregisterForCallbacks( &engineCallback );
    

Callback

Callback di XAudio2

Guida alla programmazione di XAudio2

Procedura: Creare un grafico di elaborazione audio di base

Procedura: Trasmissione di un suono in un flusso da disco