打印

香版主,能否让设备向PC机枚举时产生不同的设备名称?

[复制链接]
6194|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lmp|  楼主 | 2009-11-24 11:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
香版主,你好!
       能否让设备向PC机枚举时产生不同的设备名称?

        我现在用STM32做了一个读卡器,采用CCID协议,读卡器上有三个不同的插糟,因PC端目前的驱动(windows自带的驱动)不能按照CCID协议,采用不同的SLOT向读卡器发命令. 按照你的建议,向PC机枚举多个设备的方法来解决多插糟的问题,现在各设备都能正常工作,但在PC机列举设备时,设备名称都是相同的,只是在最后PC驱动自动加上不同的数据以区分,客户会不明白哪个设备名称对应哪个插糟,我抓了两张图如下,第一张是设备管理器显示的,应该是改不了,我主要是想改第二张的名称, W5181 Contact Reader 0, W5181 Contact Reader 1,W5181 Contact Reader 2,最后的0,1,2,是驱动自动加上去的, 我想让不同的设备显示不同的名称,如W5181 SAM Reader ,W5181 SIM Reader .请问该如何改,我已尝试两天了,也没找到办法,请指点,谢谢!

沙发
香水城| | 2009-11-24 11:45 | 只看该作者
这是关于PC端的问题,牵扯到Windows的驱动,我没有做过,不是很清楚。但我估计改起来比较困难。

看你的第2张图,既然这个"PC/SC smartcard reader demo"是你自己写的,你何不在读出系统提供的名称之后,在显示的时候换一个名字呢?

使用特权

评论回复
板凳
lmp|  楼主 | 2009-11-24 12:10 | 只看该作者
谢谢香版主,
      第二张图是测试组写的demo,我们的读卡器是要卖给不同的客户,不提供驱动.所以客户列举出的设备名称肯定与DEMO列举的是相同的,客户很难区分哪个设备名称对应哪个卡糟,

使用特权

评论回复
地板
香水城| | 2009-11-24 15:01 | 只看该作者
因为没有做过这方面的东西,我们也不知道如何改这个名字。

但不知道你是否能够通过获得复合设备的序号来区分哪个卡糟?还有一个办法是增加一条自定义的命令,要求设备端报告卡槽编号。

使用特权

评论回复
5
lmp|  楼主 | 2009-11-24 17:39 | 只看该作者
谢谢香版主,

           现在尝试修改描术符,看看能不能解决.

使用特权

评论回复
6
香水城| | 2009-11-24 18:03 | 只看该作者
说到修改描述符,如果你使用复合设备的方式,也许能够通过设置Interface描述符中的string描述符来区分,但我不知道在主机端如何获取这个string描述符。

使用特权

评论回复
7
lmp|  楼主 | 2009-11-25 13:26 | 只看该作者
:),:D,通过设置Interface描述符中的string描述符可以让PC机显示不同设备的名称,谢谢香版主!

使用特权

评论回复
8
香水城| | 2009-11-25 13:39 | 只看该作者
设置Interface描述符中的string描述符能够实现你的要求吗?怎么做到的?

我对这个问题的结果很感兴趣,:P

使用特权

评论回复
9
lxyppc| | 2009-11-25 14:18 | 只看该作者
interface descriptor中有一项是iInterface,(offset为8)
可以指定一个描述此interface的字符串
如果为0则忽略

使用特权

评论回复
10
computer00| | 2009-11-25 14:24 | 只看该作者
跟设备描述符中的字符串的做法是一样的拉

使用特权

评论回复
11
香水城| | 2009-11-25 14:26 | 只看该作者
interface descriptor中有一项是iInterface,(offset为8)
可以指定一个描述此interface的字符串
如果为0则忽略
lxyppc 发表于 2009-11-25 14:18


谢谢!我知道怎么设置,这正是我在8楼所建议的,只是不知道这个string描述符在Windows中是否能够被转化成该设备的名称供程序员或终端用户识别?

使用特权

评论回复
12
computer00| | 2009-11-25 14:32 | 只看该作者
你设置了什么,它就会显示什么呀...主机会把请求接口字符串描述符的请求发到接口,你返回字符串描述符就可以了

使用特权

评论回复
13
香水城| | 2009-11-25 15:05 | 只看该作者
哈哈,谢谢圈圈,好久不见了,就这么简单?下次我也试试看,:lol

使用特权

评论回复
14
lxyppc| | 2009-11-25 15:30 | 只看该作者
谢谢!我知道怎么设置,这正是我在8楼所建议的,只是不知道这个string描述符在Windows中是否能够被转化成该设备的名称供程序员或终端用户识别?
香水城 发表于 2009-11-25 14:26


不好意思没看明白
1. 如果是写用户程序,我知道Hid设备可以通过HidD_GetIndexedString(可能未公开需要自己声明)来获得字符串描述符。但是不知道怎么能得到interface的描述符

2. 如果设备管理器中能看到这个interface的描述,可以肯定程序能通过某种方法得到这个字符串。因为这个字符串会在注册表的某个位置中。

3. 如果是写驱动程序,通过转发URB什么信息都能得到。

使用特权

评论回复
15
香水城| | 2009-11-25 15:57 | 只看该作者
对!HidD_GetIndexedString()可以读到string描述符,但不知道怎么对应到interface?

使用特权

评论回复
16
lmp|  楼主 | 2009-12-3 10:54 | 只看该作者
每个接口都有一个(iInterface),将string的编号放在这里即可.

使用特权

评论回复
17
myfaith| | 2010-12-15 10:12 | 只看该作者
挖坟了~

楼主以复合设备枚举出3个读卡器,一个PICC,一个ICC,一个SIM,按照规范PICC和ICC各需要三个端点,SIM可以只有两个端点,所以总共需要8个端点,但是STM32的非控制端点只有7个,请问楼主是如何以7个端点满足8个端点需求的?难道是使用了控制端点作为数据端点用?

使用特权

评论回复
18
vigia| | 2010-12-15 11:35 | 只看该作者
共需要的8个端点不是同一方向的

STM32有双向8个端点,也就是8个IN端点和8个OUT端点。

使用特权

评论回复
19
myfaith| | 2010-12-15 13:02 | 只看该作者
楼上误解了,手册说的8个双向端点是指可以配置成IN或者OUT,某个端点配置成了IN就没有OUT了,反之亦然.

使用特权

评论回复
20
vigia| | 2010-12-15 13:26 | 只看该作者
所谓的双向端点,就是即有IN方向的端点也有OUT方向的端点

STM32支持8个双向端点,完全没有配置了IN就没有OUT之类的限制。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

lmp

11

主题

30

帖子

0

粉丝