Procédure : utiliser des rappels de moteur

Vous pouvez notifier le code client XAudio2 des événements du moteur en inscrivant un instance d’une classe implémentant l’interface IXAudio2EngineCallback avec le moteur XAudio2. Cela permet au code client XAudio2 de suivre quand le traitement audio se produit et quand redémarrer le moteur en cas d’erreur critique.

Pour utiliser un rappel de moteur

Les étapes suivantes inscrivent un objet pour gérer les événements du moteur.

  1. Créez une classe qui hérite de l’interface IXAudio2EngineCallback .

    Toutes les méthodes d’IXAudio2EngineCallback sont purement virtuelles et doivent être définies. La méthode intéressante dans cet exemple est IXAudio2EngineCallback::OnCriticalError, qui définit un indicateur pour signaler à la boucle de jeu main qu’une erreur critique s’est produite. Les méthodes restantes, IXAudio2EngineCallback::OnProcessingPassStart et IXAudio2EngineCallback::OnProcessingPassEnd, sont des stubs dans cet exemple.

    class EngineCallback : public IXAudio2EngineCallback
    {
        void OnProcessingPassEnd () {}
        void OnProcessingPassStart() {}
        void OnCriticalError (HRESULT Error) {}
    };
    
  2. Utilisez XAudio2Create pour créer un instance du moteur XAudio2.

    if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )
        return hr;
    
  3. Utilisez IXAudio2::RegisterForCallbacks pour inscrire le rappel du moteur.

    pXAudio2->RegisterForCallbacks( &engineCallback );
    
  4. Si vous n’avez plus besoin du rappel du moteur, appelez IXAudio2::UnregisterForCallbacks.

    pXAudio2->UnregisterForCallbacks( &engineCallback );
    

Rappels

Rappels XAudio2

Guide de programmation XAudio2

Procédure : créer un graphique de traitement audio de base

Procédure : diffuser un son en continu à partir du disque