#include <stdio.h>
#include <locale.h>
#include <mmdeviceapi.h>
#include <Functiondiscoverykeys_devpkey.h>
int main()
{
IMMDeviceEnumerator* pEnumerator;
IMMDeviceCollection* pCollection;
unsigned int n, i;
IMMDevice* device;
IPropertyStore* store;
PROPVARIANT varName;
_wsetlocale(LC_ALL, L"korean"); /*정상적인 유니코드 출력을 위한 로케일 명시*/
CoInitialize(NULL); /*COM 사용을 위한 초기화. 윈속의 WSAStartup과 같은 개념*/
/*IMM 열거자를 얻어온다*/
CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL, CLSCTX_ALL, __uuidof(IMMDeviceEnumerator), (void**)&pEnumerator);
pEnumerator->EnumAudioEndpoints(eRender, DEVICE_STATE_ACTIVE, &pCollection); /*단말 컬렉터를 얻어온다.*/
pCollection->GetCount(&n); /*단말 갯수 얻기*/
printf("출력 장치 : \n");
for (i = 0; i < n; i++) {
pCollection->Item(i, &device); /*i번 디바이스 얻어오기*/
device->OpenPropertyStore(STGM_READ, &store); /*디바이스 속성 얻어오기*/
store->GetValue(PKEY_Device_FriendlyName, &varName); /*디바이스 이름 얻어오기*/
wprintf(TEXT("%s\n"), varName.pwszVal);
}
pEnumerator->EnumAudioEndpoints(eCapture, DEVICE_STATE_ACTIVE, &pCollection);
pCollection->GetCount(&n);
printf("입력 장치 : \n");
for (i = 0; i < n; i++) {
pCollection->Item(i, &device);
device->OpenPropertyStore(STGM_READ, &store);
store->GetValue(PKEY_Device_FriendlyName, &varName);
wprintf(TEXT("%s\n"), varName.pwszVal);
}
CoUninitialize(); /*해제*/
return 0;
}
|
cs |
실행 결과 :
'뻘짓' 카테고리의 다른 글
Winmain 코드 (귀차니즘 해소용) (0) | 2020.09.26 |
---|---|
로우소켓을 통한 스타크래프트 유저 IP추적기 만들기 (0) | 2020.09.23 |
libvpx를 통한 인코딩 예제 (0) | 2020.09.07 |
libvpx 빌드하기 (파일 첨부 되어있음) (0) | 2020.09.05 |
OpenSSL을 통한 소수 생성 (랜덤) (1) | 2020.09.02 |