3 #include "SDL_xaudio2_winrthelpers.h"
5 using Windows::Devices::Enumeration::DeviceClass;
6 using Windows::Devices::Enumeration::DeviceInformation;
7 using Windows::Devices::Enumeration::DeviceInformationCollection;
9 HRESULT IXAudio2_GetDeviceCount(IXAudio2 * ixa2, UINT32 * devcount)
11 // TODO, WinRT: make xaudio2 device enumeration only happen once, and in the background
12 auto operation = DeviceInformation::FindAllAsync(DeviceClass::AudioRender);
13 while (operation->Status != Windows::Foundation::AsyncStatus::Completed)
17 DeviceInformationCollection^ devices = operation->GetResults();
18 *devcount = devices->Size;
22 HRESULT IXAudio2_GetDeviceDetails(IXAudio2 * unused, UINT32 index, XAUDIO2_DEVICE_DETAILS * details)
24 auto operation = DeviceInformation::FindAllAsync(DeviceClass::AudioRender);
25 while (operation->Status != Windows::Foundation::AsyncStatus::Completed)
29 DeviceInformationCollection^ devices = operation->GetResults();
30 if (index >= devices->Size)
32 return XAUDIO2_E_INVALID_CALL;
35 DeviceInformation^ d = devices->GetAt(index);
38 wcsncpy_s(details->DeviceID, ARRAYSIZE(details->DeviceID), d->Id->Data(), _TRUNCATE);
39 wcsncpy_s(details->DisplayName, ARRAYSIZE(details->DisplayName), d->Name->Data(), _TRUNCATE);