启用一个已经停用的usb设备?

kacy16 2011-09-15 05:28:45
各位兄弟,小弟我目前碰到一问题,主机连接了两个使用了相同usb芯片的usb设备,GUID是相同的,PID和VID相同,固件版本号不相同,问题是我想实现一功能,对其中一个usb设备进行停止,启动的动作。其中停止可以实现了,但是当停止了该usb设备后,
再启用它的话,就找不到该设备,所以也对设备调用不了SetupDiCallClassInstaller函数来再启动它了。请问各位有没有什么好方法来解决该问题,谢谢!
...全文
358 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kacy16 2013-08-15
  • 打赏
  • 举报
回复
引用 10 楼 luckyboy101 的回复:
[Quote=引用楼主 kacy16 的回复:] 各位兄弟,小弟我目前碰到一问题,主机连接了两个使用了相同usb芯片的usb设备,GUID是相同的,PID和VID相同,固件版本号不相同,问题是我想实现一功能,对其中一个usb设备进行停止,启动的动作。其中停止可以实现了,但是当停止了该usb设备后, 再启用它的话,就找不到该设备,所以也对设备调用不了SetupDiCallClassInstaller函数来再启动它了。请问各位有没有什么好方法来解决…… [/Quote] 楼主解决了?能给出解决方案?
没有找到解决方案,此问题不了了知。
luckyboy101 2012-03-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 kacy16 的回复:]
各位兄弟,小弟我目前碰到一问题,主机连接了两个使用了相同usb芯片的usb设备,GUID是相同的,PID和VID相同,固件版本号不相同,问题是我想实现一功能,对其中一个usb设备进行停止,启动的动作。其中停止可以实现了,但是当停止了该usb设备后,
再启用它的话,就找不到该设备,所以也对设备调用不了SetupDiCallClassInstaller函数来再启动它了。请问各位有没有什么好方法来解决……
[/Quote]
楼主解决了?能给出解决方案?
roostercai 2011-10-29
  • 打赏
  • 举报
回复
添加一个id 44
pzhuyy 2011-10-27
  • 打赏
  • 举报
回复
windows还不有为他分配地址的,需要低层驱动来的。
kacy16 2011-10-07
  • 打赏
  • 举报
回复
谢谢各位的意见,小弟我现在又碰到一个问题,
我的程序观测到该usb设备已经断开连接(物理上是一直连接着的),windows系统返回的错误号是:31,
表示是A device attached to the system is not functioning(连到系统上的设备没有发挥作用)意思.停用这个usb设备后,再启用它,可惜的是再和该设备进行通信时,还是有错误。感觉到没有成功启用该设备一样。
菜鸟一个 2011-09-17
  • 打赏
  • 举报
回复
直接绕过计算机 通过驱动向硬盘发送指令,它就起来了 。
SetupDiGetClassDevs (&m_GUID, NULL, NULL, (DIGCF_PRESENT | DIGCF_DEVICEINTERFACE));
这个发送完以后 返回成功的话 只是代表磁盘可能已经启动了 。 但是可能还没有完全启动,
在启动过程中你给它发指令 它当然不理你了。 等几秒钟 用个sleep();
然后在发你那个指令看看 是不是就成功了呢。。
菜鸟一个 2011-09-17
  • 打赏
  • 举报
回复
这个停用了 其实是硬盘进入 休眠状态 计算机无法获取(在不刷新的情况下),
想让他在此启动的话,只要向磁盘发送一个READY指令 就好了 它就启动了。
ArcRain 2011-09-16
  • 打赏
  • 举报
回复
SetupDiGetClassDevs (&m_GUID, NULL, NULL, (DIGCF_PRESENT | DIGCF_DEVICEINTERFACE));
把DIGCF_PRESENT去掉试试,既然已经停用了,DIGCF_PRESENT加上也就找不到了。
kacy16 2011-09-16
  • 打赏
  • 举报
回复
谢谢gold_water兄.
gold_water 2011-09-16
  • 打赏
  • 举报
回复
没玩过,帮顶~~
kacy16 2011-09-16
  • 打赏
  • 举报
回复
自己顶一下!
详细的信息如下,当停用该设备后,知道该设备的guid的信息。
先调用
1 SetupDiGetClassDevs (&m_GUID, NULL, NULL, (DIGCF_PRESENT | DIGCF_DEVICEINTERFACE));
然后调用
SetupDiEnumDeviceInterfaces来获得详细信息时,该函数会返回错误.

没有取得已经停用的该设备的信息,所以也不能下一步对它进行 启动 的动作。
想请教一下各位有没有什么好方法来启用一个已经停用的设备?谢谢!

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧