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
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;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;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.