阅读:1626回复:16
多块相同PCI卡的驱动开发及应用问题!放分罗!!
制作了多块相同的PCI卡,所有的卡功能相同,工作方式相同,只是
映射不同的储存空间, 请问:是否编写一个驱动程序就可以了?(使用DS) 驱动程序里面如何区分这些卡 应用程序如何区分这些卡 刚开始开发,幼稚问题,也请回答几句! 目前一块PCI已经可以工作正常,不知道多块加上去怎么办? |
|
最新喜欢:ppl
|
沙发#
发布于:2003-06-16 18:57
一个drvier就够了。
app可以通过guid来识别 driver就不说了。。。 |
|
板凳#
发布于:2003-06-17 08:36
老大,能不能详细一点,
inf文件要修改吗? 每一片的NVROM的值是不是都一样? 不同的GUID在那里创建的,我目前用的是linkname打开创建句柄 来个step-step帮助吧!谢谢 问题解决,还要重谢哟!呵呵 |
|
|
地板#
发布于:2003-06-17 11:26
inf也不用改。
--------------- 每一片的NVROM的值是不是都一样? --------------- 不知道。 用linkname?那简单,创建linkname的时候,加硬编码。第一个是linkname1,第二个是linkname2,呵呵 |
|
地下室#
发布于:2003-06-17 11:33
创建linkname的时候,加硬编码。第一个是linkname1,第二个是linkname2
怎么加?驱动里面是不是自动完成1,2,3添加的? 不解呀! |
|
|
5楼#
发布于:2003-06-17 15:38
通过判断板卡所在的槽位号进行控制也许可以吧
|
|
6楼#
发布于:2003-06-17 18:22
通过判断板卡所在的槽位号进行控制也许可以吧 请教怎么判断槽位号?? |
|
|
7楼#
发布于:2003-06-17 19:24
创建linkname的时候,加硬编码。第一个是linkname1,第二个是linkname2 看art baker的《2K driver设计指南》 |
|
8楼#
发布于:2003-06-17 19:44
在waly oney的书上也找了一段 :D
UNICODE_STRING devname; static LONG lastindex = -1; LONG devindex = InterlockedIncrement(&lastindex); WCHAR name[32]; _snwprintf(name, arraysize(name), L\"\\\\Device\\\\SIMPLE%2.2d\", devindex); RtlInitUnicodeString(&devname, name); IoCreateDevice(...); 仅作参考 |
|
9楼#
发布于:2003-06-18 08:33
看看我这种想法对不对?
先开发一块PCI卡的驱动,正常运转。 再插上一切相同的卡,硬件和NVROM中的内容都一样, 驱动程序遍历所有的PCI槽,识别这几个PCI卡,多次调用 AddDevice();从而创建不同的FDO,当然也创建了不同的 linkName0、linkname1,linkname2等等,应用程序则使用 不同的linkname打开相应的设备。 是不是?现在还没有实践,呵呵! |
|
|
10楼#
发布于:2003-06-18 10:19
不需要你的driver去查找PCI设备了。有bus driver呢。
对应每个你的PCI卡,AddDevice都会被调用,你在AddDevice用linkname也好,用guid(IoRegisterDeviceInterface)也好,不同的卡就可以有不同的linkname or interface 至于怎么把linkname或interface给app,看你怎么组织了。 |
|
11楼#
发布于:2003-06-20 16:01
你的问题很好解决,卡当然应该是完全一样,只要一个驱动程序就可以,不过你的驱动应该是针对多卡选一而设计的,这样的话,你的驱动入口参数可以多加一个(一般为两个vender_id,device_id),就是再加一个索引id,这样就完全可以去访问你要的那块卡。
我现在也有类似你的开发,不过比你惨多了,因为我不能改动驱动程序(驱动程序是针对一卡开发的),却要实现多卡选一的功能,不知道你有什么好方法??交流交流,谢谢11111 |
|
12楼#
发布于:2003-06-20 22:29
你的问题很好解决,卡当然应该是完全一样,只要一个驱动程序就可以,不过你的驱动应该是针对多卡选一而设计的,这样的话,你的驱动入口参数可以多加一个(一般为两个vender_id,device_id),就是再加一个索引id,这样就完全可以去访问你要的那块卡。 请问在加的一个索引id,是不是每一个卡的这个id都要写成不一样的?请务必回答。 |
|
|
13楼#
发布于:2003-06-21 12:05
当然不一样,0―N
|
|
14楼#
发布于:2003-06-21 12:20
当然不一样,0―N 那你是写在eeprom的保留区域的吧,有驱动程序去读取。 |
|
|
15楼#
发布于:2003-06-29 20:28
我越看越糊涂了。看看WINDRIVER不就清楚了?
|
|
16楼#
发布于:2003-07-01 00:11
驱动程序置一变量,初始为0,每次bus driver调用你的adddevice(也就是bus driver 发现了有一块卡)时加1,这样显然就得到了要得区分设备的id
|
|
|