Anvisningar: Initiera XAudio2
Du initierar XAudio2 för ljuduppspelning genom att skapa en instans av XAudio2-motorn och sedan skapa en mastering-röst.
Först måste du ha initierat COM. Om du använder C++/WinRT, så är det ordnat. Om du inte är säker på att din miljö redan har initierat COM kan du anropa CoInitializeEx så länge du kontrollerar returvärdet.
HRESULT hr = ::CoInitializeEx(nullptr, COINIT_MULTITHREADED); if (FAILED(hr)) return hr;
Om du vill skapa en instans av XAudio2-motorn anropar du funktionen XAudio2Create. Det ger dig en pekare till ett IXAudio2--gränssnitt, och det är en bra idé att lagra det i en klassdatamedlem. I det här kodfragmentet använder vi en smart C++/WinRT-pekare, men du kan använda en råpekare om det behövs.
winrt::com_ptr<IXAudio2> m_xAudio2{}; ... winrt::check_hresult(::XAudio2Create(m_xAudio2.put(), 0, XAUDIO2_DEFAULT_PROCESSOR));
För att skapa en så kallad mastering-röst anropar du sedan metoden IXAudio2::CreateMasteringVoice. Det ger dig en pekare till ett IXAudio2MasteringVoice--gränssnitt. En masterröst kapslar in en ljudenhet. Det är det ultimata målet för allt ljud som passerar genom ett ljuddiagram.
IXAudio2MasteringVoice* m_pXAudio2MasteringVoice{}; ... winrt::check_hresult(xAudio2->CreateMasteringVoice(&m_pXAudio2MasteringVoice));
Smarta pekare
För säkerhet och bekvämlighet kan du använda en smart pekare för gränssnittet IXAudio2. Men röstgränssnitten (till exempel IXAudio2MasteringVoice) har ingen Release-metod, så du får se ett byggfel om du försöker använda en smart pekare för dem. I dessa kodfragment använder vi en smart pekare där det är möjligt och en råpekare där det behövs.