Delen via


Hoe: engine-callbacks gebruiken

U kunt de XAudio2-clientcode van engine-gebeurtenissen melden door een exemplaar van een klasse te registreren dat de IXAudio2EngineCallback interface met de XAudio2-engine implementeert. Hierdoor kan de XAudio2-clientcode bijhouden wanneer audioverwerking plaatsvindt en wanneer de engine opnieuw moet worden opgestart in het geval van een kritieke fout.

Een engine-callback gebruiken

Met de volgende stappen registreert u een object voor het afhandelen van engine-gebeurtenissen.

  1. Maak een klasse die erft van de IXAudio2EngineCallback interface.

    Alle methoden van IXAudio2EngineCallback zijn puur virtueel en moeten worden gedefinieerd. De methode van belang in dit voorbeeld is IXAudio2EngineCallback::OnCriticalError, waarmee een vlag wordt ingesteld om de hoofdspellus te signaleren dat er een kritieke fout heeft plaatsgevonden. De overige methoden, IXAudio2EngineCallback::OnProcessingPassStart en IXAudio2EngineCallback::OnProcessingPassEnd, zijn stubs in dit voorbeeld.

    class EngineCallback : public IXAudio2EngineCallback
    {
        void OnProcessingPassEnd () {}
        void OnProcessingPassStart() {}
        void OnCriticalError (HRESULT Error) {}
    };
    
  2. Gebruik XAudio2Create om een exemplaar van de XAudio2-engine te maken.

    if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )
        return hr;
    
  3. Gebruik IXAudio2::RegisterForCallbacks om de callback van de engine te registreren.

    pXAudio2->RegisterForCallbacks( &engineCallback );
    
  4. Als u de engine-callback niet meer nodig heeft, gebruikt u IXAudio2::UnregisterForCallbacks.

    pXAudio2->UnregisterForCallbacks( &engineCallback );
    

Callbacks

XAudio2-callbacks

XAudio2 Programming Guide

Instructies: Een eenvoudige audiografiek bouwen

Instructies: Een geluid streamen vanaf schijf