bluemoonxd
驱动牛犊
驱动牛犊
  • 注册日期2005-03-18
  • 最后登录2005-04-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:6917回复:10

多片相同的PCI设备,他们的device ID,vendor ID等等都是一样的,GUID不一样,在应用程序中如何区分打开设备呢?

楼主#
更多 发布于:2005-03-18 16:41
请教一个问题:
在硬件系统中,如果存在多片相同的PCI设备,他们的device ID,vendor ID等等都是一样的,在应用程序中如何区分打开设备呢?驱动需要有什么改动呢?

现在我的做法是为每一个设备安装一个不同的驱动,每个驱动仅仅GUID不一样,然受在应用程序中打开设备时仅仅靠GUID来区分,这样总是不能打开两个以上的设备,现象是:第一个装驱动能打开,后装的就不可以了,是不是还有没有考虑到的?难道一定要靠EEPROM更改PCI的ID么?

请各位高手指点迷津,小女子感激不尽!
windrobust
驱动牛犊
驱动牛犊
  • 注册日期2005-03-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-19 12:16
你的每个板卡的DI和VI都一样的话,只要第一个板卡装上驱动以后,再插上第二块板卡,系统会默认为其选择已经安装到系统中的第一个板卡的驱动,也就是说第二个板卡的驱动应该没有装上,所以就打开不了设备了
你的问题我也碰到过
bluemoonxd
驱动牛犊
驱动牛犊
  • 注册日期2005-03-18
  • 最后登录2005-04-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-02 16:39
非常感谢!!:)
这个问题解决了,第二个卡的驱动得用driverstuido重新生成一遍,给不同的卡安上,靠guid区分就可以了,原来我只是把同一个驱动复制了两份,再改了guid重新编译后给两个卡安上,这样不好用。
wwm_820924
驱动牛犊
驱动牛犊
  • 注册日期2004-07-04
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望169点
  • 贡献值1点
  • 好评度22点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-06 12:31
我问个问题,我用的DDK+vc6,自己写驱动,INF文件也是自己写的。请问应该怎样区分DID,VID相同的卡。谢谢!
windrobust
驱动牛犊
驱动牛犊
  • 注册日期2005-03-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望31点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-07 12:59
设备号
AdolfGyeNyame
驱动牛犊
驱动牛犊
  • 注册日期2007-04-08
  • 最后登录2010-04-30
  • 粉丝0
  • 关注0
  • 积分113分
  • 威望42点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-04-20 00:41
Re:多片相同的PCI设备,
可以改链接名,我就是这么做的
xunix
驱动牛犊
驱动牛犊
  • 注册日期2006-06-07
  • 最后登录2007-10-16
  • 粉丝0
  • 关注0
  • 积分200分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-06-10 10:05
GUID不一样,在应用程序中如何区分打开设备呢?
一直有个问题不太清楚,PCI设备的device ID、vendor ID是在硬件里定义的,GUID应该是在驱动的INF文件里定义的吧?
但用DriverStudio生成驱动和测试程序的时候,测试程序是怎么知道自己要测试的是哪块板卡呢?应该也是通过GUID吧。
我在用DriverStudio生成一个PCI板卡的驱动时,它自动在inf文件里加了这2行:
Class=1394Devices
ClassGUID={ff646f80-8def-11d2-9449-00105a075f6b}
按理说这块卡的GUID就应该是ff646f80-8def-11d2-9449-00105a075f6b了
但是DriverStudio生成的测试程序的interface.h里,却又有
#define NewfpgaDevice_CLASS_GUID \
 { 0xc0c48a61, 0x906, 0x11d9, { 0x81, 0xc2, 0x52, 0x54, 0xab, 0x50, 0x2b, 0x11 } }
这两个ID完全不一样啊,我都看糊涂了,请问哪位高手可以解释一下?
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-06-10 12:07
Re:GUID不一样,在应用程序中如何区分打开设备呢?
引用第6楼xunix于2007-06-10 10:05发表的 GUID不一样,在应用程序中如何区分打开设备呢? :
一直有个问题不太清楚,PCI设备的device ID、vendor ID是在硬件里定义的,GUID应该是在驱动的INF文件里定义的吧?
但用DriverStudio生成驱动和测试程序的时候,测试程序是怎么知道自己要测试的是哪块板卡呢?应该也是通过GUID吧。
我在用DriverStudio生成一个PCI板卡的驱动时,它自动在inf文件里加了这2行:
Class=1394Devices
ClassGUID={ff646f80-8def-11d2-9449-00105a075f6b}
.......

One is an setup class guid, the other is interface guid,
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
xunix
驱动牛犊
驱动牛犊
  • 注册日期2006-06-07
  • 最后登录2007-10-16
  • 粉丝0
  • 关注0
  • 积分200分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-06-10 20:06
……
谢谢楼上的专家,那么驱动程序应该是根据Interface GUID来确定自己是为什么硬件服务的吧?
似乎在DriverStudio里,setup class GUID和 interface GUID都是自己生成的,而且似乎每新建一个新的驱动,GUID都是一样的,这样不会弄混么?
waterpure
驱动牛犊
驱动牛犊
  • 注册日期2006-09-08
  • 最后登录2008-04-29
  • 粉丝1
  • 关注0
  • 积分150分
  • 威望16点
  • 贡献值0点
  • 好评度15点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-06-11 17:13
Re:GUID不一样,在应用程序中如何区分打开设备呢?
我也碰到类似的问题,setup的class Guid是代表这一类设备,所以比如说1394Devices这类的设备都是一样的class GUID,
在你插入安装一个设备实例的时候,windows就会给这个加载驱动的设备分配一个instance(interface id),用这个id可以获得打开这个设备的句柄。这个就是在这台机子上windows用来区别各个设备而不至于弄混的
lee922@gmail.co
驱动牛犊
驱动牛犊
  • 注册日期2007-07-31
  • 最后登录2010-06-22
  • 粉丝0
  • 关注0
  • 积分39分
  • 威望340点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分1分
10楼#
发布于:2007-12-30 11:28
如何修改改链接名?
请问5楼的
如何修改改链接名?
游客

返回顶部