renhao153
驱动牛犊
驱动牛犊
  • 注册日期2009-05-29
  • 最后登录2010-09-05
  • 粉丝0
  • 关注0
  • 积分35分
  • 威望271点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2823回复:10

DDK开发USB设备请问一下怎么区分不同的USB设备

楼主#
更多 发布于:2010-07-14 13:07
如USB光驱和USB存储设备我怎么区分了高手请回答一下
renhao153
驱动牛犊
驱动牛犊
  • 注册日期2009-05-29
  • 最后登录2010-09-05
  • 粉丝0
  • 关注0
  • 积分35分
  • 威望271点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2010-07-14 13:11
请版主回答一下急用谢谢了
jally76
驱动牛犊
驱动牛犊
  • 注册日期2005-04-28
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望590点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2010-07-16 10:44
USB设备的Device Descriptor中有bDeviceClass, bDeviceSubClass,Interface Descriptor中有bInterfaceClass, bInterfaceSubClass,通地这些就可以区分不同的USB设备
vc1500
驱动牛犊
驱动牛犊
  • 注册日期2009-12-27
  • 最后登录2010-07-16
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2010-07-16 19:51
回 2楼(jally76) 的帖子
如果是做嵌入式,开发一个主机,是这个主机可以去接一些USB设备,例如鼠标,摄像头等,写驱动的时候要注意什么。就是说比如把鼠标插到电脑上,电脑自带的有HID驱动,但是摄像头有时候需要另外装驱动,我就是想问问怎么在主机上实现能够随便接上一个USB摄像头,主机就能够识别它的设备号,并使它开始工作?
为了俺媳妇
renhao153
驱动牛犊
驱动牛犊
  • 注册日期2009-05-29
  • 最后登录2010-09-05
  • 粉丝0
  • 关注0
  • 积分35分
  • 威望271点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2010-07-17 17:36
回 2楼(jally76) 的帖子
这些我已知道 但是我用USBD_ParseConfigurationDescriptorEx  这个函数取 Interface Descripto 但不知道怎么的常显Error LNK2019
而得到的bDeviceClass, bDeviceSubClass都 是0请问一下有什么解决办法
jally76
驱动牛犊
驱动牛犊
  • 注册日期2005-04-28
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望590点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2010-07-18 22:46
Error LNK2019是编译链接时就出错了,如何得到bDeviceClass, bDeviceSubClass的?
renhao153
驱动牛犊
驱动牛犊
  • 注册日期2009-05-29
  • 最后登录2010-09-05
  • 粉丝0
  • 关注0
  • 积分35分
  • 威望271点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2010-07-20 13:45
回 5楼(jally76) 的帖子
恩咯,我现在是用这个函数是没法子调用了,张帆那本书的例子更改可植性太差了
有没有其它办法得到这个bDeviceClass, bDeviceSubClass
jally76
驱动牛犊
驱动牛犊
  • 注册日期2005-04-28
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望590点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2010-07-21 11:13
主机是在检测到设备接入到端口后,给设备分配地址,然后读取相应的设备描述符及配置描述符。设备的Class及SubClass信息可以从配置描述符中得到,根据这个信息主机再加载相应的Class驱动。
jally76
驱动牛犊
驱动牛犊
  • 注册日期2005-04-28
  • 最后登录2010-11-23
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望590点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2010-07-21 11:19
Re:回 5楼(jally76) 的帖子
引用第6楼renhao153于2010-07-20 13:45发表的 回 5楼(jally76) 的帖子 :
恩咯,我现在是用这个函数是没法子调用了,张帆那本书的例子更改可植性太差了
有没有其它办法得到这个bDeviceClass, bDeviceSubClass


怎么可能没法子调用?这是USB驱动开发中经常要用到的函数

当然,你可以自己来Parse收到的Configuration描述符,Parse的方法其实很简单,只需注意各种描述符的数据结构长度是不一样的,要根据它的长度字节来确定下一个描述符的位置。
renhao153
驱动牛犊
驱动牛犊
  • 注册日期2009-05-29
  • 最后登录2010-09-05
  • 粉丝0
  • 关注0
  • 积分35分
  • 威望271点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2010-08-03 15:43
回 8楼(jally76) 的帖子
我现在用 得到Configuration描述符 用PUSB_INTERFACE_DESCRIPTOR interfaceDescriptor
=(PUSB_INTERFACE_DESCRIPTOR)(Configuration描述符+1)的方法取得了描述符但是这只有在
ConfigurationDescriptor->wTotalLength 为32时才取得正确的描述符 ConfigurationDescriptor->wTotalLength 为25则得不到 我现在是本机有三个USB口有两个能得到正确的接口描述符还有一个得不到正确的描述符请问怎么解决
tonghai523
驱动牛犊
驱动牛犊
  • 注册日期2007-07-30
  • 最后登录2011-01-04
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望56点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2010-08-11 09:15
请问楼主是怎么解决这个问题的啊,我也碰到了同样的问题,想要区分usb的刻录光驱和U盘,但是我用楼上那些大侠回复的方法,都不行,首先bDeviceClass, bDeviceSubClass得出来的结果都是0,还有bInterfaceClass, bInterfaceSubClass得出来的结果是两个设备是相同的,所以我现在实在是很困惑,不知道该怎么做,请大侠们给指导个方向。。。。。。。
游客

返回顶部