This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1294NCPDT:Windows 7串行驱动程序的 USB 复合 HID-CDC 安全删除问题

Guru**** 2484615 points
Other Parts Discussed in Thread: TM4C1294NCPDT

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/729776/tm4c1294ncpdt-usb-composite-hid-cdc-surpise-removal-issue-with-windows-7-serial-driver

器件型号:TM4C1294NCPDT

我有运行复合 USB hid-CDC 器件的 TM4C1294NCPDT 器件。 问题出在运行 Windows 7 x64 (SP1)的 PC 上意外删除 USB 设备(或终止并重新启动 USB 控制器)上、前者锁定了 COM 端口。 因此、当我插入 USB 回放时、Windows 无法打开 COM 端口。 但是、hid 补码工作正常。 仅 CDC USB 器件不存在此类问题。 似乎 usbser.sys 应该删除从 NT 设备名称(\Device\USBBER001)到 DOS 设备名称(COM4)的符号链接,并删除删除删除设备删除时在 HKEY_LOCAL_MACHINE\SOFTWARE\DEVICEMAP\SERIALCOMM 中的注册表项,但它不会这样做。 是否有任何解决方法?  这可能是设备方面的问题吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Igor、

    删除问题是否意味着 COM 端口不会在设备管理器中释放以供重复使用?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ralph、
    拔下 USB 设备后、COM 端口在设备管理器中消失。 但是、当我将其插入 COM 端口时、无法打开。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ralph、
    除我之前的答复外:在这种情况下、任何应用程序都不使用 COM 端口。 此外、如果我多次插入/拔下设备、设备管理器中的设备也会正确显示/显示。 但是、在第一次拔下 USB 设备后、我可以看到我在问题中指出的符号链接和注册表项未被删除。  我注意到、只插入/拔下 CDC 器件工作正常、会导致 Windows 创建/删除这些链接和注册表项、因此我假设其 Windows 故障(usbser.sys 更精确)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Igor、

    在设备管理器中看到它应该可以更清楚地了解我的意思。 如果您在"视图"选项卡中打开"显示隐藏的设备"、您是否看到 COM 端口仍在此处列出? 如果是、我认为这也是您在注册表中看到的内容。 如果是 Windows 或 TI 问题、则不是100%、但它不仅限于 TM4C、MSP430的行为也是一样的。 当 COM 端口打开时、通常会在拔下 USB 时发生这种情况。 这会导致其无法正确关闭、然后在 Windows 中继续。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ralph、
    COM 端口完全消失、即使有"显示隐藏的设备"选项、我也看不到它。 问题是、我不会尝试在第一个插件后打开或使用 COM 端口、在移除 USB 设备后它会自动锁定。 我只是在第二个插件之后尝试打开它、以检测它是否被锁定。 然后重新启动 PC 或删除 symlink 和注册表项以解锁端口。

    更新:

    我的 USB HID 补充是使用功率器件类。 我已尝试为通用桌面鼠标类替换 Power Device 类,但问题已解决。 但即使将 HID 电力设备描述符设为空也没有帮助。 因此、该问题在某种程度上与 Windows 电源驱动程序(hidbatt。sys 我猜)、Windows 串行驱动程序(usbser.sys)和 Windows 通用父驱动程序(usbccgp.sys)有关。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Igor、

    我没有使用功率器件类的经验、因此这真的超出了我的能力。 我建议尝试 Windows 论坛来查看是否有任何 Windows 专家对这些文件有建议。