阅读:5525回复:10
多个同样的usb设备用同一个driver如何安装?
打开设备的时候怎么区别?好像只有第一个设备可以用。
|
|
最新喜欢:![]() |
沙发#
发布于:2002-01-24 09:37
不同的USB设备,其vendor ID和device ID是不同的。
不同的USB设备可以用一个driver,不过需要修改.ini文件,把相应的vendor ID和device ID改成不同设备自己的。 |
|
|
板凳#
发布于:2002-01-24 12:15
还有一点不明:
上层App打开设备的时候,如果用同一个driver的话,deviceName和GUID是一样的,怎么区分打开的是哪个设备呢? |
|
地板#
发布于:2002-01-24 14:47
可以通过读出device number来区别;或读出具体所在hub的port number来区别
|
|
|
地下室#
发布于:2002-01-24 19:01
什么Device number啊?怎么读啊?
|
|
5楼#
发布于:2002-01-27 05:36
如果我没记错的话,SetupAPI DLL 中用 SetupDiEnumDeviceInfo 加设备编号,再调 SetupDiEnumDeviceInterfaceDetail 两次可以
得到 devicePath, 这对同一个设备的不同实例(例如你一下子插了 n个一模一样的设备)是不同的,这时可以用 CreateFile 来打开 不同的设备实例(用前面得到的 devicePath 作参数)。 |
|
6楼#
发布于:2002-01-27 19:02
事实上,Chris Cant 所著的<Writing Windows WDM Device Driver>
一书中第83页的 GetDeviceViaInterface 函数可供参考。但我自己 经参阅 DDK 文档中的资料,加多了一个步骤,现将我的做法列出如 下(上一封回复真的记错了函数): 1) SetupDiGetClassDevs 2) SetupDiEnumDeviceInfo, 这一步的目的是要得到同类设备的 不同物理设备实例的 SP_DEVINFO_DATA 3) SetupDiEnumDeviceInterfaces, 这里用第2步得到的 SP_DEVINFO_DATA 变量的地址来作第二个参数,而不是象书中以 NULL 作参数; 4) 调两次 SetupDiGetDeviceInterfaceDetail 5) CreateFile 得到设备 HANDLE 6) SetupDiDestroyDeviceInfoList 这就是全部步骤了。希望对你有帮助! ************************************************************ 似僧有发 似俗脱尘 做梦中梦 悟身外身 大头和尚 谨上 |
|
7楼#
发布于:2004-05-13 16:26
大哥,我还是不能成功。
GUID不赋值,得到的总是0xCCCCCCC-CC.... 如果用HidD_GetHidGuid()永远得到一个固定的值,肯定不是我的USB. 给GUID赋值为我的USB设备的GUID, 这个时候调用第二个函数SetupDiEnumInterfaceDevice() 总是返回FALSE。 我都要疯了,请指定迷津。 谢谢。 |
|
8楼#
发布于:2005-05-18 15:26
友情帮顶,我也想知道!
|
|
9楼#
发布于:2005-05-18 15:55
请问多种用 AN2131QC 的产品,底层驱动都是EZUSB。SYS,发生冲突怎么办?
斑竹你好,由于我的两种产品都用了EZUSB。SYS 直接做驱动程序,结果,只用其中的任何一种设备可以,但不能同时用,我分别用不同的VID PID,及把EZUSB。SYS 改名都试过,不知怎摸处理好? 是用DDK生成新的SYS,还是在应用软件中,先查出VID PID ,然后区别处理? 多谢!! |
|
10楼#
发布于:2005-05-18 19:28
关于ezusb.sys问题,你要把ezusb.sys的驱动稍微修改一下,创建的设备名字还有guid要独一无二,然后改inf文件的VID&PID,改驱动文件的名字也要不一样。也就是说不能是同样的驱动来支持不同的设备。
|
|