阅读:6917回复:10
多片相同的PCI设备,他们的device ID,vendor ID等等都是一样的,GUID不一样,在应用程序中如何区分打开设备呢?
请教一个问题:
在硬件系统中,如果存在多片相同的PCI设备,他们的device ID,vendor ID等等都是一样的,在应用程序中如何区分打开设备呢?驱动需要有什么改动呢? 现在我的做法是为每一个设备安装一个不同的驱动,每个驱动仅仅GUID不一样,然受在应用程序中打开设备时仅仅靠GUID来区分,这样总是不能打开两个以上的设备,现象是:第一个装驱动能打开,后装的就不可以了,是不是还有没有考虑到的?难道一定要靠EEPROM更改PCI的ID么? 请各位高手指点迷津,小女子感激不尽! |
|
沙发#
发布于:2005-03-19 12:16
你的每个板卡的DI和VI都一样的话,只要第一个板卡装上驱动以后,再插上第二块板卡,系统会默认为其选择已经安装到系统中的第一个板卡的驱动,也就是说第二个板卡的驱动应该没有装上,所以就打开不了设备了
你的问题我也碰到过 |
|
板凳#
发布于:2005-04-02 16:39
非常感谢!!:)
这个问题解决了,第二个卡的驱动得用driverstuido重新生成一遍,给不同的卡安上,靠guid区分就可以了,原来我只是把同一个驱动复制了两份,再改了guid重新编译后给两个卡安上,这样不好用。 |
|
地板#
发布于:2005-04-06 12:31
我问个问题,我用的DDK+vc6,自己写驱动,INF文件也是自己写的。请问应该怎样区分DID,VID相同的卡。谢谢!
|
|
地下室#
发布于:2005-04-07 12:59
设备号
|
|
5楼#
发布于:2007-04-20 00:41
Re:多片相同的PCI设备,
可以改链接名,我就是这么做的 |
|
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完全不一样啊,我都看糊涂了,请问哪位高手可以解释一下? |
|
7楼#
发布于:2007-06-10 12:07
Re:GUID不一样,在应用程序中如何区分打开设备呢?
引用第6楼xunix于2007-06-10 10:05发表的 GUID不一样,在应用程序中如何区分打开设备呢? : One is an setup class guid, the other is interface guid, |
|
|
8楼#
发布于:2007-06-10 20:06
……
谢谢楼上的专家,那么驱动程序应该是根据Interface GUID来确定自己是为什么硬件服务的吧?似乎在DriverStudio里,setup class GUID和 interface GUID都是自己生成的,而且似乎每新建一个新的驱动,GUID都是一样的,这样不会弄混么? |
|
9楼#
发布于:2007-06-11 17:13
Re:GUID不一样,在应用程序中如何区分打开设备呢?
我也碰到类似的问题,setup的class Guid是代表这一类设备,所以比如说1394Devices这类的设备都是一样的class GUID,在你插入安装一个设备实例的时候,windows就会给这个加载驱动的设备分配一个instance(interface id),用这个id可以获得打开这个设备的句柄。这个就是在这台机子上windows用来区别各个设备而不至于弄混的 |
|
驱动牛犊
|
10楼#
发布于:2007-12-30 11:28
如何修改改链接名?
请问5楼的如何修改改链接名? |