阅读:2793回复:10
求救!多个同样的设备通过HUB连在电脑上却只识别出一个设备?
我在98下用Ezusb的驱动例子作为我的Bulk类型设备的驱动,但是我发现如果多个同样的设备插上的时候,在设备管理器里面只有一个设备,而我的应用程序也只能打开一个设备。
我跟踪了设备的连接过程,发现第一个设备插上的时候,系统调用驱动里面的StartDevice,操作一切正常。而当第二个或更多的设备插上的时候,系统却再也没有调用过StartDevice,而只是调用ezusb_dispatchpnp这个函数,所以系统只是在枚举完设备得到描述表后就再也没有任何包发下来了。期间第一个设备始终是正常操作的。 我怀疑是98在枚举完设备,得到描述表后,发现设备的驱动程序已经在内存里了,所以就不再装载驱动了,不知道我的想法对不对。那位大虾熟悉ezusb的驱动或是驱动方面的高手,请指点两招,非常感谢! |
|
沙发#
发布于:2004-03-24 12:32
各位大老帮忙出出主意
|
|
板凳#
发布于:2004-03-26 20:16
目前这个问题仍未搞定,寻驱动高手指点一二。
最新的进展是,我加入了对IRP_MN_QUERY_ID这个请求的响应,98系统最开始查询BusDeviceIds,然后是InstanceIds。然后出现两种情况, 1、如果InstanceIds和第一个设备是一样的,那么98就发送IRP_MN_QUERY_RELATIONS这个请求,我未做处理,然后系统就没有动作了,设备未被识别。 2、如果InstanceIds和第一个设备不一样的,那么98就会接着查询HardwareIds和CompatibleIds,接下来会发一些IRP_MN_QUERY_RELATIONS、IRP_MN_BUS_INFO等请求,我未做处理,然后系统会StartDevice,成功后马上就StopDevice,搞得我没脾气。最后,设备管理器里面是个带感叹号的设备,郁闷阿。 |
|
地板#
发布于:2004-03-29 17:48
Bulk only的话vip,pid相同就需要不同的Serial Number
|
|
地下室#
发布于:2004-03-30 12:04
谢谢楼上的帮忙!
那Serial Number如何得到?或如何生成?能否说得再详细一些,谢谢! |
|
5楼#
发布于:2004-03-30 17:20
用vc 自带的guid generator 原理是基于COM
|
|
6楼#
发布于:2004-03-30 23:59
产生的guid如何应用在程序中呢?请原谅问题较幼稚,呵呵
|
|
7楼#
发布于:2004-03-31 09:11
Serial number必须在固件级更改
|
|
8楼#
发布于:2004-03-31 10:07
Serial number必须在固件级更改 你是说在硬件量产的时候必须为每个产品单独写入一个Serial number,是吗? |
|
9楼#
发布于:2004-03-31 11:24
right!
[quote]Serial number必须在固件级更改 你是说在硬件量产的时候必须为每个产品单独写入一个Serial number,是吗? [/quote] |
|
10楼#
发布于:2004-03-31 12:19
如果通过驱动能避开这个问题吗
|
|