在 Windows 7 x64 企业版下,使用 HP Z600 工作站,带有两个不同的 COM 端口适配器,一个 USB 和一个 PCI-E。我有以下问题。
这些设备已经可靠工作了一年左右。现在,在设备管理器中,所有的 COM 端口都会显示一个黄色的感叹号警告标志。在属性下进一步检查后,每个 COM 端口设备都会声明:
Windows 无法加载此硬件的设备驱动程序。驱动程序可能已损坏或缺少代码 39
没有成功我试过:
- 重启几次
- 重新安装两个 COM 端口适配器
- 重新安装与第二个 COM 端口适配器交互的软件
该解决方案类似于解决 USB 设备的代码 39。最终奏效的解决方案是删除以下键下的 UpperFilters 多字符串值(类型:REG_MULTI_SZ):
如果您的注册表项的名称略有不同,您可以浏览类下的所有注册表项,并检查它们的用途。我只是滚动浏览类下的所有键,直到找到正确的键。在 REG_SZ 默认值下(如您在我的屏幕截图顶部所见),您将找到注册表项所指的设备类型。
请注意,在我的屏幕截图中,这是一个空的 UpperFilters:实际上它会包含某个值,否则它看起来像这样。
那么这些神秘的上层过滤器是什么呢?根据techguy.org 上的一篇文章:“UpperFilters 是在将应用程序传递给主设备驱动程序之前处理/过滤来自应用程序的设备访问请求的驱动程序。” 换句话说(我的),如果这个值是错误的,你的访问请求将不会在主设备驱动程序中结束,设备将无法运行。在某些情况下,UpperFilters 是必不可少的,如果没有它们,您的设备将无法正常工作。因此,最好确保在删除之前记住您的 UpperFilters(或将其重命名为 UpperFiltersOld 或其他名称)。