UAC开发调试笔记
+ -

Windows下UAC麦克风友名(FriendlyName)前出现数字编号问题的解决

2022-01-25 733 0

呃,年后发现一个很奇惯的现象,好像更多的时间无形中花在了内核开发网(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” 卸载设备
  • 刷新设备管理器,可以看到设备的友名从没有变成有了或者数字递增了
HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

Windows设备的惟一性标识及定位-DEVPKEY_Device_ContainerId
一个设备在接入电脑后,会由该设备所在的物理总线驱动进行枚举,并在系统中根据硬件ID(包括兼容ID)中查找最适合的驱动,并加载驱动实现对设备的驱动。以上是设备的枚举及驱动中载过程。但在这里,我们考虑的是另一种情况,即设备的惟一性标识及系统对同一设备的物理识别。在设备驱动层,我们一般都有一个笼统的概念......
Windows下UAC麦克风友名(FriendlyName)前出现数字编号问题的解决
呃,年后发现一个很奇惯的现象,好像更多的时间无形中花在了内核开发网(http://www.pnpon.com )上面。写的文章也大多发于这个网站上….呃,今天借这个Windows下UAC麦克风友名(FriendlyName)前出现数字编号问题的解决一文来再在本站USB中文网发一文吧,虽然发在内核开发......
UAC麦克风友名(FriendlyName)2-/3-数字编号处理工具
节前研究了Windows下UAC麦克风友名(FriendlyName)前出现数字编号问题的解决,知道了它的原因,但总得把它处理了吧。为了让测试的同事方便的使用,本人基于DEVCON的源代码开发了一个micreset工具,这样可以实现将原来麦克风友名(FriendlyName)2-/3-数字编号给删除......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!