说说usbview

对于经常摆弄电脑的兄弟们来说,USBVIEW是一个再熟悉不过的小工具了。

usbview是一个简单小巧,完美展示PC挂接的所有的usb设备,并显示设备的描述信息。

它占地面积极小,只有80k的大小,放在桌面也不会影响电脑的速度和其他性能。

下面展示先其界面和界面信息。

usbview界面

大家可以看到整个软件,没有过多的按钮,没有什么选项,整个界面分左右两块,

左边是usb树,显示电脑上所有的usb设备,根节点为My computer子节点是什么,以及子节点后面的编号293*是什么意义,有待进一步调查。孩子节点是我们的设备。

右边的区域是左边树上显示的设备的描述信息,总共分:设备描述信息(Device Descriptor)、设备连接状态(ConnectionStatus),endPointDescriptor等几块,其中介绍设备版本号描述(usb1.0、usb1.1、usb2.0),设备厂商(idVendor,idProduct)等。

其获取这些数据主要是依靠windowsDDK中的几个数据结构体:_USB_DEVICE_DESCRIPTOR,_USB_CONFIGURATION_DESCRIPTOR,_USB_INTERFACE_DESCRIPTOR,_USB_ENDPOINT_DESCRIPTOR,_USB_STRING_DESCRIPTOR。这几个结构体可以在msdn上找到。下面翻译下这几个结构体:

typedef struct_USB_DEVICE_DESCRIPTOR {

 UCHAR  bLength ;

 UCHAR  bDescriptorType ;

 USHORT  bcdUSB ;

 UCHAR  bDeviceClass ;

 UCHAR  bDeviceSubClass ;

 UCHAR  bDeviceProtocol ;

 UCHAR  bMaxPacketSize0 ;

 USHORT  idVendor ;

 USHORT  idProduct ;

 USHORT  bcdDevice ;

 UCHAR  iManufacturer ;

 UCHAR  iProduct ;

 UCHAR  iSerialNumber ;

 UCHAR  bNumConfigurations ;

} USB_DEVICE_DESCRIPTOR,*PUSB_DEVICE_DESCRIPTOR ;

bLength:表示该描述块的字节长

bDescriptor Type:必须设置为USB_DEVICE_DESCRIPTOR_TYPE

bcdUSB:当前usb设备的版本号0x0110为usb1.1,也称全速usb2.0,0x0200为usb2.0,也称高速usb2.0.

bDeviceClass:设备类索引码

bDeviceSubClass:设备子类索引码

bDeviceProtocol:设备协议的索引码

bMaxPacketSize():数据包最大字节数

idVendor:供应商标识符

idProduct:厂商标识符

bcdDevice:设备版本号

iManufacturer:制造商的描述字符串

iProduct:产品的描述字符串

iSerialNumber:设备序列号

bNumConfigurations:可能的配置信息的数量

typedef struct_USB_CONFIGURATION_DESCRIPTOR {

 UCHAR  bLength ;

 UCHAR  bDescriptorType ;

 USHORT  wTotalLength ;

 UCHAR  bNumInterfaces ;

 .

 .

 UCHAR  iConfiguration ;

 UCHAR  bmAttributes ;

 UCHAR  MaxPower ;

} USB_CONFIGURATION_DESCRIPTOR,*PUSB_CONFIGURATION_DESCRIPTOR ;


bLength:该描述块的字节长

bDescriptorTypt:必须设定为USB_CONFIGURATION_DESCRIPTOR_TYPE

wTotalLength:设备描述字节的总长度,包括所有的借口信息,类别信息,和设备返回的描述信息

bNumInterfaces:该配置信息中的总接口信息。

typedef struct_USB_ENDPOINT_DESCRIPTOR {

 UCHAR  bLength ;

 UCHAR  bDescriptorType ;

 UCHAR  bEndpointAddress ;

 UCHAR  bmAttributes ;

 USHORT  wMaxPacketSize ;

 UCHAR  bInterval ;

} USB_ENDPOINT_DESCRIPTOR,*PUSB_ENDPOINT_DESCRIPTOR ;

bLength:长度,不说了

bDescriptorType:不说了

bEndpointAddress:该设备在地址空间的结束位置,最高位为1标识入口的结束地址,为0标识出口的地址
bInterval:中断地址

哎,E文不好,只能这样了!以后有更深入的理解再补充吧

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值