Windows下UAC麦克风友名(FriendlyName)前出现数字编号问题的解决
呃,年后发现一个很奇惯的现象,好像更多的时间无形中花在了内核开发网(http://www.pnpon.com )上面。写的文章也大多发于这个网站上….
呃,今天借这个Windows下UAC麦克风友名(FriendlyName)前出现数字编号问题的解决一文来再在本站USB中文网发一文吧,虽然发在内核开发网上更合理。
不知道大家有没人做过留意过这种情况,就是比如自己弄了一个UAC设备(无论是扬声器还是麦克风),我们假定设备名称我们在固件中指定为”USBZH Audio Device”
那么我们在长时间使用该设备的时候可能会出现如下的情况,某天设备的显示名(即友名)变成了这样的: 2 - USBZH Audio Device 或者甚至是 3- USBZH Audio Device,反正就是这样的格式:x - USBZH Audio Device
友名加数字的根因
这个问题的根因是设备的Container ID发生了变化,导致系统认为该设备已经存在,而这个设备的友名又遇之前的友名字符一致,故系统为了区分,就加了一个数字编号。
如我们在注册表的如下路径中会看到相关的信息:
计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\DeviceClasses\{2eef81be-33fa-4800-9670-1cd474972c3f}
当然我们在注册表中搜索这个友名,也会出现在如下的注册表下:
计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\SWD\MMDEVAPI\{0.0.1.00000000}.{1376515e-dab5-4e9f-ac31-e7ed6a70db59}
当然也会搜索到注册表中的这个目录下:
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses\{2eef81be-33fa-4800-9670-1cd474972c3f}\##?#SWD#MMDEVAPI#{0.0.1.00000000}.{1376515e-dab5-4e9f-ac31-e7ed6a70db59}#{2eef81be-33fa-4800-9670-1cd474972c3f}\#\Device Parameters
通过以上的注册表信息可知:
- DeviceInstance:SWD\MMDEVAPI{0.0.1.00000000}.{1376515e-dab5-4e9f-ac31-e7ed6a70db59}
Container ID:{1218204f-518c-11ec-97b7-00243224658f}
计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\DeviceContainers{1218204f-518c-11ec-97b7-00243224658f}\BaseContainers{1218204f-518c-11ec-97b7-00243224658f}
ClassGUID:{c166523c-fe0c-4a94-a586-f1a80cfbbf3e}
AUDIOENDPOINT_CLASS_UUID:c166523c-fe0c-4a94-a586-f1a80cfbbf3e
audioendpoint.inf文件中的信息:[Version] Signature="$Windows NT$" Provider=%MSFT% ClassGUID={C166523C-FE0C-4A94-A586-F1A80CFBBF3E} Class=AudioEndpoint DriverVer = 03/18/2019,10.0.18362.1
{2eef81be-33fa-4800-9670-1cd474972c3f} DEVINTERFACE_AUDIO_CAPTURE
解决法
解决方法其实比较简单,就是在设备管理器中显示隐藏的设备,然后把之前的同名的设备卸载掉,在“音频输入与输出”和“声音、视频和游戏控制器”中卸载掉设备。
另一种方法是要以从子节点逐步向根节点卸载设备,最终删除所有设备
问题复现
- 手动在设备管理器中更新设备驱动
- 使用devcon.exe remove “hardwrdid” 卸载设备
- 刷新设备管理器,可以看到设备的友名从没有变成有了或者数字递增了