引用 9 楼 wdy0725 的回复:
引用 7 楼 huntercao 的回复:
如果同时烧写多个设备,如果突然拔出其中一个,有时会造成另一个烧写失败, 有时正常。不解, 请赐教。
每开始一个任务,上层应用都会起一个线程, 可以使多个任务同时工作。
->一个程序同时烧写多个设备?烧写失败的时候,烧写程序得到的错误信息是什么?
根上面的一样,31,连接系统上的设备没有发挥作用。 谢谢你。
1. 请确认驱动里面收到IRP_MN_REMOVE_DEVICE之后做的事情是否正确。由于你是一个驱动(Driver Service)管理多个设备(Device)。在处理IRP_MN_REMOVE_DEVICE时候,不要将Driver Level的东西提前删除掉。举个简单的例子:假使系统里面有两个设备同时在烧写,那么系统里会有1个Driver Object, 2个Device Object。将A设备拔出之后,系统给A 设备发IRP_MN_REMOVE_DEVICE,这个时候不能删除A设备Device Object的同时,将Driver Object删除了。如果想进一步分析,你得提供更多的消息才行。起码得告诉大家IRP_MN_REMOVE_DEVICE你是怎么处理的。
2. 我不知道Code 31是什么意思。请告知是哪个函数返回错误代码31,DeviceIOCTL?WriteFile?如果你能够跟踪驱动代码,请看看出错时,对应驱动里面的处理函数在干什么。