{"id":1279,"date":"2011-08-30T19:14:24","date_gmt":"2011-08-30T17:14:24","guid":{"rendered":"https:\/\/alax.info\/blog\/?p=1279"},"modified":"2011-08-30T19:17:14","modified_gmt":"2011-08-30T17:17:14","slug":"utility-clearance-enumerate-audio-mmdevices","status":"publish","type":"post","link":"https:\/\/alax.info\/blog\/1279","title":{"rendered":"Utility Clearance: Enumerate Audio &#8216;MMDevice&#8217;s"},"content":{"rendered":"<p>The utility and code does straightforward enumeration of MMDevices (Vista+, check MSDN for <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dd371399%28v=vs.85%29.aspx\">MMDevice API availability<\/a>), which correspond to MMDevice API, WASAPI, Core Audio API. The code itself is straightforward, with a ready to use binary to quickly lookup data of interest:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1280\" title=\"Enumerate Audio Devices in Action\" src=\"https:\/\/alax.info\/blog\/wp-content\/uploads\/2011\/08\/Image0012.png\" alt=\"\" width=\"541\" height=\"363\" srcset=\"https:\/\/alax.info\/blog\/wp-content\/uploads\/2011\/08\/Image0012.png 541w, https:\/\/alax.info\/blog\/wp-content\/uploads\/2011\/08\/Image0012-320x214.png 320w\" sizes=\"auto, (max-width: 541px) 100vw, 541px\" \/><\/p>\n<p>The data is detailed well and in Excel-friendly format (via Copy\/Paste):<\/p>\n<p><a href=\"https:\/\/alax.info\/blog\/wp-content\/uploads\/2011\/08\/Image002.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-1281\" title=\"Enumerate Audio Device Output in Microsoft Excel\" src=\"https:\/\/alax.info\/blog\/wp-content\/uploads\/2011\/08\/Image002-800x362.png\" alt=\"\" width=\"620\" height=\"280\" srcset=\"https:\/\/alax.info\/blog\/wp-content\/uploads\/2011\/08\/Image002-800x362.png 800w, https:\/\/alax.info\/blog\/wp-content\/uploads\/2011\/08\/Image002-320x144.png 320w, https:\/\/alax.info\/blog\/wp-content\/uploads\/2011\/08\/Image002.png 1277w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/a><\/p>\n<p>The code also automatically looks up for named Windows SDK constants, such as <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dd316594%28v=vs.85%29.aspx\">PKEY_Device_FriendlyName<\/a>:<\/p>\n<pre>\u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 Identifier\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{0.0.1.00000000}.{4c1a7642-3f91-43e5-8fcf-b4b1e803d3f9}\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0State\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0DEVICE_STATE_DISABLED\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a00x02\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0Properties:\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{B3F8FA53-0004-438E-9003-51A46E139BFC}, 15\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a016 bytes of BLOB, DA 07 03 00 02 00 09 00 0E 00 39 00 16 00 C5 02\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a065\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0PKEY_Device_DeviceDesc\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0Stereo Mix\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a031\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{B3F8FA53-0004-438E-9003-51A46E139BFC}, 6\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0Realtek High Definition Audio\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a031\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{B3F8FA53-0004-438E-9003-51A46E139BFC}, 2\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{1}.HDAUDIO\\FUNC_01&amp;VEN_10EC&amp;DEV_0888&amp;SUBSYS_80860034&amp;REV_1002\\4&amp;37D44F2F&amp;0&amp;0201\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a031\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{83DA6326-97A6-4088-9453-A1923F573B29}, 3\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0oem29.inf:AzaliaManufacturerID.NTamd64.6.0:IntcAzAudModel:6.0.1.5964:hdaudio\\func_01&amp;ven_10ec&amp;dev_0888\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a031\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0PKEY_Device_BaseContainerId\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{00000000-0000-0000-FFFF-FFFFFFFFFFFF}\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a072\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0PKEY_Device_ContainerId\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{00000000-0000-0000-FFFF-FFFFFFFFFFFF}\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a072\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0PKEY_Device_EnumeratorName\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0HDAUDIO\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a031\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0PKEY_AudioEndpoint_FormFactor\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a010\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a019\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0PKEY_AudioEndpoint_JackSubType\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{DFF21FE1-F70F-11D0-B917-00A0C9223196}\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a031\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0PKEY_DeviceClass_IconPath\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0%windir%\\system32\\mmres.dll,-3018\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a031\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{840B8171-B0AD-410F-8581-CCCC0382CFEF}, 0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0316 bytes of BLOB, 01 00 00 00 38 01 00 00 ... 00 00 00 00\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a065\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0PKEY_AudioEndpoint_Association\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{00000000-0000-0000-0000-000000000000}\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a031\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0PKEY_AudioEndpoint_Supports_EventDriven_Mode\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a01\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a019\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{24DBB0FC-9311-4B3D-9CF0-18FF155639D4}, 3\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a00\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a011\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{24DBB0FC-9311-4B3D-9CF0-18FF155639D4}, 4\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0-1\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a011\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{9A82A7DB-3EBB-41B4-83BA-18B7311718FC}, 1\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a065536\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a019\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{233164C8-1B2C-4C7D-BC68-B671687A2567}, 1\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{2}.\\\\?\\hdaudio#func_01&amp;ven_10ec&amp;dev_0888&amp;subsys_80860034&amp;rev_1002#4&amp;37d44f2f&amp;0&amp;0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\\rtstereomixwave\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a031\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{5A9125B7-F367-4924-ACE2-0803A4A3A471}, 0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a01610612916\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a019\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{B3F8FA53-0004-438E-9003-51A46E139BFC}, 0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a03\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a019\r\n<span style=\"color: #3366ff;\"><strong>\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0PKEY_Device_FriendlyName\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0Stereo Mix (Realtek High Definition Audio)\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a031<\/strong><\/span>\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0PKEY_DeviceInterface_FriendlyName\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0Realtek High Definition Audio\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a031\r\n\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0PKEY_AudioEndpoint_GUID\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a0{4C1A7642-3F91-43E5-8FCF-B4B1E803D3F9}\u00c2\u00a0\u00c2\u00a0 \u00c2\u00a031<\/pre>\n<p>A binary [<a href=\"https:\/\/www.alax.info\/svn\/public\/trunk\/Utilities\/EnumerateAudioDevices\/_Bin\/Win32\/Release\/EnumerateAudioDevices.exe\">Win32<\/a>, <a href=\"https:\/\/www.alax.info\/svn\/public\/trunk\/Utilities\/EnumerateAudioDevices\/_Bin\/x64\/Release\/EnumerateAudioDevices.exe\">x64<\/a>] and partial Visual C++ .NET 2010 <a href=\"https:\/\/www.alax.info\/trac\/public\/browser\/trunk\/Utilities\/EnumerateAudioDevices\">source code<\/a> are available from SVN.<\/p>\n<p>See also:<\/p>\n<ul>\n<li><a href=\"http:\/\/blogs.msdn.com\/b\/matthew_van_eerde\/archive\/2011\/06\/13\/how-to-enumerate-audio-endpoint-immdevice-properties-on-your-system.aspx\">A similar tool with source code<\/a><\/li>\n<li><a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dd371400%28v=VS.85%29.aspx\">IMMDeviceEnumerator::EnumAudioEndpoints<\/a> on MSDN<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The utility and code does straightforward enumeration of MMDevices (Vista+, check MSDN for MMDevice API availability), which correspond to MMDevice API, WASAPI, Core Audio API. The code itself is straightforward, with a ready to use binary to quickly lookup data of interest: The data is detailed well and in Excel-friendly format (via Copy\/Paste): The code&hellip; <\/p>\n<p><a class=\"moretag\" href=\"https:\/\/alax.info\/blog\/1279\">Read the full article<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,6,13,2,20],"tags":[81,485,378,191,375,376,318,132,377],"class_list":["post-1279","post","type-post","status-publish","format-standard","hentry","category-atl","category-audio","category-source","category-utilities","category-wtl","tag-api","tag-audio","tag-core-audio","tag-device","tag-immdevice","tag-mmdevice","tag-tool","tag-utility","tag-wasapi"],"_links":{"self":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts\/1279","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/comments?post=1279"}],"version-history":[{"count":0,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts\/1279\/revisions"}],"wp:attachment":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/media?parent=1279"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/categories?post=1279"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/tags?post=1279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}