123ddd123qqq
驱动牛犊
驱动牛犊
  • 注册日期2010-04-28
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2114回复:3

IRP_MN_REMOVE_DEVICE 收不到。 有时会显示 Unknown Device

楼主#
更多 发布于:2010-05-06 18:04
我用VC6.0 + DriverStudio 生成一个usb驱动(wmd),将binary文件写到板子上。已经完成读写功能。这里有几个问题:

1.  一种奇怪的情况:
当我插上usb设备再拔出时,分别收到IRP_MN_SURPRISE_REMOVAL 和 IRP_MN_REMOVE_DEVICE 两个中断。
当板子烧写完成后,拔出usb也可以收到这两个中断。
但是在我烧写过程中,如果拔出usb,只能收到IRP_MN_SURPRISE_REMOVAL 中断,没有IRP_MN_REMOVE_DEVICE。在我关闭上层烧代码的应用时,才会收到IRP_MN_REMOVE_DEVICE中断。
我所说的有没有收到中断,是根据这两个中断相应的函数有没有调用判断的(用softice)。

2. 如果同时烧写多个设备,如果突然拔出其中一个,有时会造成另一个烧写失败, 有时正常。不解, 请赐教。

3. 有时主机会出现识别不到板子的情况-"Unknown Device", 有时插拔多次也不行,只能重启电脑, 请问这是为什么?

4. 有时,在设备管理器中显示了我的设备,但是在调用SetupDiGetClassDevs后,再调用SetupDiEnumDeviceInterfaces返回确是空,插拔几次就可能获得。GUID没有问题,而且我用softice跟踪,GUID也成功注册了。请问这是不是最底层函数了, 该怎么做? 不胜感激。

有的板子不容易出现第三个和第四个问题,请问这与板子有关系吗? (相同的板子,相同的代码)

在上层,每开始一个任务,应用都会起一个线程, 可以使多个任务同时下载。

我没有做过windows驱动,只看了一天相关的书,算是有点概念了。

多谢各位了!
123ddd123qqq
驱动牛犊
驱动牛犊
  • 注册日期2010-04-28
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-05-07 16:01
没人知道吗?
123ddd123qqq
驱动牛犊
驱动牛犊
  • 注册日期2010-04-28
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-05-10 17:27
令人失望
123ddd123qqq
驱动牛犊
驱动牛犊
  • 注册日期2010-04-28
  • 最后登录2010-05-26
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2010-05-11 10:50
斑竹呢? 能否解释一下,谢谢了。
游客

返回顶部