So wird's gemacht: Initialisieren von XAudio2

XAudio2 wird für die Audiowiedergabe initialisiert, indem eine Instanz der XAudio2-Engine und eine Masteringstimme erstellt werden.

So initialisieren Sie XAudio2

  1. Stellen Sie sicher, dass Sie COM initialisiert haben. Bei einer Windows Store-App erfolgt dies im Rahmen der Initialisierung der Windows Runtime. Verwenden Sie andernfalls CoInitializeEx.

    HRESULT hr;
    hr = CoInitializeEx( nullptr, COINIT_MULTITHREADED );
    if (FAILED(hr))
        return hr;
    
  2. Verwenden Sie die XAudio2Create-Funktion, um eine Instanz der XAudio2-Engine zu erstellen.

    IXAudio2* pXAudio2 = nullptr;
    if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )
        return hr;
    
  3. Verwenden Sie die CreateMasteringVoice-Methode, um eine Masteringstimme zu erstellen.

    Die Masteringstimmen kapseln ein Audiogerät. Es ist das endgültige Ziel für alle Audiodaten, die ein Audiodiagramm durchlaufen.

    IXAudio2MasteringVoice* pMasterVoice = nullptr;
    if ( FAILED(hr = pXAudio2->CreateMasteringVoice( &pMasterVoice ) ) )
        return hr;
    

Hinweise zu Windows Store-Apps

Es wird empfohlen, einen intelligenten Zeiger zu verwenden, um die Lebensdauer von XAUDIO2-Objekten auf ausnahmesichere Weise zu verwalten. Für Windows Store-Apps können Sie die Smart Pointer-Vorlage ComPtr aus der C++-Vorlagenbibliothek (WRL) Windows Runtime verwenden.

Microsoft::WRL::ComPtr<IXAudio2> XAudio2;
HRESULT hr;
if ( FAILED(hr = XAudio2Create( &XAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) )
    throw Platform::Exception::CreateException(hr);

IXAudio2MasteringVoice* pMasterVoice = nullptr;
if ( FAILED(hr = pXAudio2->CreateMasteringVoice( &pMasterVoice ) ) )
    return hr;

Hinweis

Stellen Sie sicher, dass alle untergeordneten XAUDIO2-Objekte vollständig freigegeben sind, bevor Sie das IXAudio2-Objekt freigeben.

XAudio2-Erste Schritte

So wird's gemacht: Laden von Datendateien in XAudio2

So wird's gemacht: Wiedergeben von Ton mit XAudio2