阅读:2114回复:3
IRP_MN_REMOVE_DEVICE 收不到。 有时会显示 Unknown Device
我用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驱动,只看了一天相关的书,算是有点概念了。 多谢各位了! |
|
沙发#
发布于:2010-05-07 16:01
没人知道吗?
|
|
板凳#
发布于:2010-05-10 17:27
令人失望
|
|
地板#
发布于:2010-05-11 10:50
斑竹呢? 能否解释一下,谢谢了。
|
|