開発環境 |
Microsoft Visual Studio Community 2017 |
実行環境 |
Microsoft Windows 10 Home (64bit) |
プロジェクトの種類 |
Visual C++ / 空のプロジェクト |
プロジェクト名 |
atlmmdev |
atlmmdev.cpp
#include <atlbase.h>
#include <mmdeviceapi.h>
#include <functiondiscoverykeys_devpkey.h>
#include <fcntl.h> // _O_WTEXT
#include <io.h> // _setmode
const CLSID CLSID_MMDeviceEnumerator = __uuidof(MMDeviceEnumerator);
int main()
{
CComPtr<IMMDeviceEnumerator> pEnumerator;
CComPtr<IMMDeviceCollection> pCollection;
UINT count;
HRESULT hr;
_setmode(_fileno(stdout), _O_WTEXT); // UTF16
hr = CoInitialize(NULL);
hr = pEnumerator.CoCreateInstance(CLSID_MMDeviceEnumerator);
hr = pEnumerator->EnumAudioEndpoints(eRender, DEVICE_STATE_ACTIVE, &pCollection);
hr = pCollection->GetCount(&count);
if (count == 0) {
wprintf(L"No endpoints found.\n");
}
for (UINT i = 0; i < count; i++) {
CComPtr<IMMDevice> pEndpoint;
CComPtr<IPropertyStore> pProps;
PROPVARIANT varName;
LPWSTR pwszID;
hr = pCollection->Item(i, &pEndpoint);
hr = pEndpoint->GetId(&pwszID);
hr = pEndpoint->OpenPropertyStore(STGM_READ, &pProps);
PropVariantInit(&varName);
hr = pProps->GetValue(PKEY_Device_FriendlyName, &varName);
wprintf(L"Endpoint %u: '%s' (%s)\n", i, varName.pwszVal, pwszID);
CoTaskMemFree(pwszID);
}
CoUninitialize();
return 0;
}
最終更新:2018年05月30日 17:03