<p>I decided to release a little tool that I created to test the C&plus;&plus; part of my Default Audio Device Switcher that I built using DefSOUND for SoundSwitch&period;<&sol;p>&NewLine;<p>The tester only uses the lib to list all the audio device found &lpar;that are active&rpar; and then when a device change state&comma; it will display the change&period;<&sol;p>&NewLine;<h2 class&equals;"release-downloads-header">Update tooling for VS 2017<&sol;h2><div class&equals;"release-description"><p>Same testing tool&comma; with the possibility to switch audio device&period;<&sol;p>&NewLine;<p>Used only for testing purpose&period;<&sol;p>&NewLine;<h1>Usage<&sol;h1>&NewLine;<ul>&NewLine;<li>s &colon; toggle the default audio device<&sol;li>&NewLine;<li>q &colon; quit the application<&sol;li>&NewLine;<&sol;ul><&sol;div><ul class&equals;"release-downloads"><li><a href&equals;"https&colon;&sol;&sol;github&period;com&sol;Belphemur&sol;AudioEndPointLibrary&sol;releases&sol;download&sol;v4&period;7&period;1&sol;AudioTester&lowbar;x64&period;zip" rel&equals;"nofollow"><strong class&equals;"release-name">AudioTester&lowbar;x64&period;zip<&sol;strong> <small class&equals;"release-size">2&period;04 MB<&sol;small> <small class&equals;"release-download-count">157 downloads<&sol;small><&sol;a><&sol;li><li><a href&equals;"https&colon;&sol;&sol;github&period;com&sol;Belphemur&sol;AudioEndPointLibrary&sol;releases&sol;download&sol;v4&period;7&period;1&sol;AudioTester&lowbar;x86&period;zip" rel&equals;"nofollow"><strong class&equals;"release-name">AudioTester&lowbar;x86&period;zip<&sol;strong> <small class&equals;"release-size">1&period;85 MB<&sol;small> <small class&equals;"release-download-count">54 downloads<&sol;small><&sol;a><&sol;li><li><a href&equals;"https&colon;&sol;&sol;github&period;com&sol;Belphemur&sol;AudioEndPointLibrary&sol;archive&sol;v4&period;7&period;1&period;zip" rel&equals;"nofollow"><strong class&equals;"release-source">Source code<&sol;strong><&sol;a><&sol;li><&sol;ul>&NewLine;<p>You can find enclosed the code used to create the tester&colon;<&sol;p>&NewLine;<script src&equals;"https&colon;&sol;&sol;gist&period;github&period;com&sol;58d45c5b9d123a82c8f2f983f32ceff0&period;js"><&sol;script><noscript><pre><code class&equals;"language-c&plus;&plus; c&plus;&plus;">&sol;&sol; AudioEndTester&period;cpp &colon; Defines the entry point for the console application&period;&NewLine;&sol;&sol;&NewLine;&NewLine;&num;include &quot&semi;stdafx&period;h&quot&semi;&NewLine;&num;include &quot&semi;AudioEndPointLibrary&period;h&quot&semi;&NewLine;&num;include &lt&semi;iostream&gt&semi;&NewLine;&num;include &lt&semi;string&gt&semi;&NewLine;&NewLine;void do&lowbar;work&lpar;AudioEndPoint&colon;&colon;AudioDeviceList playbackDevices&comma; AudioEndPoint&colon;&colon;AudioDeviceList recordingDevices&rpar;&NewLine;&lbrace;&NewLine; &NewLine; for &lpar;AudioEndPoint&colon;&colon;AudioDeviceList&colon;&colon;iterator i &equals; playbackDevices&period;begin&lpar;&rpar;&semi; i &excl;&equals; playbackDevices&period;end&lpar;&rpar;&semi; &plus;&plus;i&rpar;&NewLine; &lbrace;&NewLine; auto audioDevice &equals; std&colon;&colon;move&lpar;&ast;i&rpar;&semi;&NewLine; std&colon;&colon;wcout &lt&semi;&lt&semi; audioDevice-&gt&semi;FriendlyName &lt&semi;&lt&semi; L&quot&semi; &colon; &quot&semi; &lt&semi;&lt&semi; audioDevice-&gt&semi;ID &lt&semi;&lt&semi;L&quot&semi; isDefault&colon; &quot&semi;&lt&semi;&lt&semi;&lpar;audioDevice-&gt&semi;IsDefault&lpar;eConsole&rpar;&quest;L&quot&semi;True&quot&semi;&colon;L&quot&semi;False&quot&semi;&rpar;&lt&semi;&lt&semi;std&colon;&colon;endl&semi;&NewLine; if&lpar;std&colon;&colon;wstring&lpar;audioDevice-&gt&semi;FriendlyName&rpar;&period;find&lpar;std&colon;&colon;wstring&lpar;L&quot&semi;Logitech&quot&semi;&rpar;&rpar; &excl;&equals; std&colon;&colon;wstring&colon;&colon;npos&rpar;&NewLine; &lbrace;&NewLine; &sol;&sol;audioDevice-&gt&semi;SetDefault&lpar;eMultimedia&rpar;&semi;&NewLine; &rcub;&NewLine; &rcub;&NewLine; std&colon;&colon;wcout &lt&semi;&lt&semi; std&colon;&colon;endl &lt&semi;&lt&semi; std&colon;&colon;endl&semi;&NewLine; &NewLine; for &lpar;AudioEndPoint&colon;&colon;AudioDeviceList&colon;&colon;iterator i &equals; recordingDevices&period;begin&lpar;&rpar;&semi; i &excl;&equals; recordingDevices&period;end&lpar;&rpar;&semi; &plus;&plus;i&rpar;&NewLine; &lbrace;&NewLine; auto audioDevice &equals; std&colon;&colon;move&lpar;&ast;i&rpar;&semi;&NewLine; std&colon;&colon;wcout &lt&semi;&lt&semi; audioDevice-&gt&semi;FriendlyName &lt&semi;&lt&semi; L&quot&semi; &colon; &quot&semi; &lt&semi;&lt&semi; audioDevice-&gt&semi;ID &lt&semi;&lt&semi; std&colon;&colon;endl&semi;&NewLine; if &lpar;std&colon;&colon;wstring&lpar;audioDevice-&gt&semi;FriendlyName&rpar;&period;find&lpar;std&colon;&colon;wstring&lpar;L&quot&semi;Logitech&quot&semi;&rpar;&rpar; &excl;&equals; std&colon;&colon;wstring&colon;&colon;npos&rpar;&NewLine; &lbrace;&NewLine; &sol;&sol;audioDevice-&gt&semi;SetDefault&lpar;eMultimedia&rpar;&semi;&NewLine; &rcub;&NewLine; &rcub;&NewLine;&rcub;&NewLine;&NewLine;void SetLists&lpar;AudioEndPoint&colon;&colon;AudioDeviceList&amp&semi; playbackDevices&comma; AudioEndPoint&colon;&colon;AudioDeviceList&amp&semi; recordingDevices&rpar;&NewLine;&lbrace;&NewLine; playbackDevices &equals; AudioEndPoint&colon;&colon;CAudioEndPointLibrary&colon;&colon;GetInstance&lpar;&rpar;&period;GetPlaybackDevices&lpar;DefSound&colon;&colon;Active&rpar;&semi;&NewLine; recordingDevices &equals; AudioEndPoint&colon;&colon;CAudioEndPointLibrary&colon;&colon;GetInstance&lpar;&rpar;&period;GetRecordingDevices&lpar;DefSound&colon;&colon;Active&rpar;&semi;&NewLine;&rcub;&NewLine;&NewLine;int main&lpar;&rpar;&NewLine;&lbrace;&NewLine; AudioEndPoint&colon;&colon;AudioDeviceList playbackDevices&semi;&NewLine; AudioEndPoint&colon;&colon;AudioDeviceList recordingDevices&semi;&NewLine; SetLists&lpar;playbackDevices&comma; recordingDevices&rpar;&semi;&NewLine; AudioEndPoint&colon;&colon;CAudioEndPointLibrary&colon;&colon;GetInstance&lpar;&rpar;&period;Signals-&gt&semi;DeviceStateChanged&period;Register&lpar;&lbrack;&rsqb;&lpar;AudioEndPoint&colon;&colon;AudioDevicePtr device&comma; DefSound&colon;&colon;EDeviceState newState&rpar;&lbrace;&NewLine; std&colon;&colon;wcout &lt&semi;&lt&semi; std&colon;&colon;endl &lt&semi;&lt&semi; device-&gt&semi;FriendlyName &lt&semi;&lt&semi;L&quot&semi; &colon; State &lpar;&quot&semi; &lt&semi;&lt&semi; device-&gt&semi;DeviceState &lt&semi;&lt&semi; L&quot&semi;&rpar;&quot&semi; &lt&semi;&lt&semi; std&colon;&colon;endl&semi;&NewLine; &rcub;&rpar;&semi;&NewLine; &NewLine; auto signInfo &equals; &amp&semi;AudioEndPoint&colon;&colon;CAudioEndPointLibrary&colon;&colon;GetInstance&lpar;&rpar;&period;Signals-&gt&semi;DeviceDefaultChanged&period;Register&lpar;&lbrack;&rsqb;&lpar;AudioEndPoint&colon;&colon;AudioDevicePtr device&comma; ERole role&rpar; &lbrace;&NewLine; std&colon;&colon;wcout &lt&semi;&lt&semi; std&colon;&colon;endl &lt&semi;&lt&semi; device-&gt&semi;FriendlyName &lt&semi;&lt&semi; L&quot&semi; &colon; ROLE &lpar;&quot&semi; &lt&semi;&lt&semi; role &lt&semi;&lt&semi; L&quot&semi;&comma; &quot&semi;&lt&semi;&lt&semi;device-&gt&semi;IsDefault&lpar;role&rpar; &lt&semi;&lt&semi; L&quot&semi;&rpar;&quot&semi; &lt&semi;&lt&semi; std&colon;&colon;endl&semi; &NewLine; &rcub;&rpar;&semi;&NewLine;&NewLine; AudioEndPoint&colon;&colon;CAudioEndPointLibrary&colon;&colon;GetInstance&lpar;&rpar;&period;Signals-&gt&semi;DeviceRemoved&period;Register&lpar;&lbrack;&rsqb;&lpar;AudioEndPoint&colon;&colon;AudioDevicePtr device&rpar; &lbrace;&NewLine; std&colon;&colon;wcout &lt&semi;&lt&semi; std&colon;&colon;endl &lt&semi;&lt&semi; device-&gt&semi;ID &lt&semi;&lt&semi; L&quot&semi; &colon; REMOVED&quot&semi; &lt&semi;&lt&semi; std&colon;&colon;endl&semi;&NewLine; &rcub;&rpar;&semi;&NewLine; std&colon;&colon;wcout &lt&semi;&lt&semi; L&quot&semi;Enter the letter Q &plus; Enter to stop the application&quot&semi; &lt&semi;&lt&semi; std&colon;&colon;endl &lt&semi;&lt&semi; &quot&semi;When a device change state or is disconnected you&&num;039&semi;ll be notified&quot&semi; &lt&semi;&lt&semi; std&colon;&colon;endl &lt&semi;&lt&semi; std&colon;&colon;endl&semi;&NewLine; auto test &equals; &&num;039&semi;a&&num;039&semi;&semi;&NewLine; while &lpar;test &excl;&equals; &&num;039&semi;q&&num;039&semi;&rpar; &lbrace;&NewLine; do&lowbar;work&lpar;playbackDevices&comma; recordingDevices&rpar;&semi;&NewLine; std&colon;&colon;cin &gt&semi;&gt&semi; test&semi;&NewLine; if&lpar;test &equals;&equals; &&num;039&semi;r&&num;039&semi;&rpar;&NewLine; &lbrace;&NewLine; signInfo-&gt&semi;m&lowbar;signal-&gt&semi;Unregister&lpar;&ast;signInfo&rpar;&semi;&NewLine; &rcub;&NewLine; &rcub;&NewLine;&rcub;&NewLine;&NewLine;<&sol;code><&sol;pre><&sol;noscript>&NewLine;<p>&nbsp&semi;<&sol;p>&NewLine;