取USB设备信息-2

转载 2006年05月18日 13:35:00
这个思路,大家看看对不对  
用这个GUID:53f56307-b6bf-11d0-94f2-00a0c91efb8b  
首先  SetupDiGetClassDevs  
然后  SetupDiEnumDeviceInterfaces  
再  SetupDiGetDeviceInterfaceDetail可以得到一个设备路径,用这个设备路径可以CreateFile打开设备得到句柄,然后用这个句柄用DeviceIoControl函数得到Serial  number  
结构:IOCTL_STORAGE_QUERY_PROPERTY,可是只能得到硬盘的Serial  number,就是得不到U盘的Serial  number,这是为什么?  
 
 
 
其实根据你的思路,再增加几个动作是可以获得USB  Mass  Storage  Device的Serial  Number的.  
如果是我,我的方法有两个:  
(1)通过驱动程序来向硬件发送命令,这样可以得到存储装置设备实例的Device  Instance  IDs,这个东西类似于下面的字符串:  
硬盘:PCIIDE/IDECHANNEL/4&E3EC092&0&0  
USB存储器:USB/VID_04A5&PID_6130/0002F0EB6D990414  
像0002F0EB6D990414就是你所要的Serial  Number.  
(2)用DDK直接对USB设备进行访问,可以得到它.  
DDK里面的USBView你已经编译通过了,这样很好.之所以会出现:iSerialNumber:              0x03,那是因为你没有对设备进行Config  Descriptors.你可以试着做一个动作:  
启动USBView.exe后,把USB设备插上去.在"Options"菜单下选中"Config  Descriptors"项,然后再到"File"菜单下,点击"Refresh  F5"子菜单项,这样Serial  Number就会看到了.  
以下是我看到的结果:  
Device  Descriptor:  
bcdUSB:                          0x0110  
bDeviceClass:                  0x00  
bDeviceSubClass:            0x00  
bDeviceProtocol:            0x00  
bMaxPacketSize0:            0x40  (64)  
idVendor:                      0x04A5  (Acer  Peripherals  Inc.)  
idProduct:                    0x6130  
bcdDevice:                    0x1001  
iManufacturer:                0x01  
0x0409:  "<USB  MF>"  
iProduct:                          0x02  
0x0409:  "<USB  PRODUCT>      "  
iSerialNumber:                0x03  
0x0409:  "0002F0EB6D9C050B"  
bNumConfigurations:      0x01  
 
ConnectionStatus:  DeviceConnected  
Current  Config  Value:  0x01  
Device  Bus  Speed:          Full  
Device  Address:              0x02  
Open  Pipes:                            2  
 
Endpoint  Descriptor:  
bEndpointAddress:          0x81  
Transfer  Type:                Bulk  
wMaxPacketSize:          0x0040  (64)  
bInterval:                        0x00  
 
Endpoint  Descriptor:  
bEndpointAddress:          0x02  
Transfer  Type:                Bulk  
wMaxPacketSize:          0x0040  (64)  
bInterval:                        0x00  
 
Configuration  Descriptor:  
wTotalLength:              0x0020  
bNumInterfaces:              0x01  
bConfigurationValue:    0x01  
iConfiguration:              0x04  
0x0409:  "USB/MSC  LCD  Player"  
bmAttributes:                  0x80  (Bus  Powered  )  
MaxPower:                          0x32  (100  Ma)  
 
Interface  Descriptor:  
bInterfaceNumber:          0x00  
bAlternateSetting:        0x00  
bNumEndpoints:                0x02  
bInterfaceClass:            0x08  
bInterfaceSubClass:      0x06  
bInterfaceProtocol:      0x50  
iInterface:                      0x05  
0x0409:  "Internal  Device"  
 
Endpoint  Descriptor:  
bEndpointAddress:          0x81  
Transfer  Type:                Bulk  
wMaxPacketSize:          0x0040  (64)  
bInterval:                        0x00  
 
Endpoint  Descriptor:  
bEndpointAddress:          0x02  
Transfer  Type:                Bulk  
wMaxPacketSize:          0x0040  (64)  
bInterval:                        0x00  

相关文章推荐

查看Android USB设备信息

  • 2014年10月19日 14:54
  • 2.46MB
  • 下载

Windows 下获取USB设备信息的通用浏览器插件实现

先挖个坑,慢慢填。 最近因为

USB设备信息检测(VBS实现)

  • 2009年04月15日 14:23
  • 429B
  • 下载

获取USB设备信息

  • 2012年09月02日 01:06
  • 90KB
  • 下载

获取USB设备的信息

#include "usbdebug.h" #define DBG_COMMAND_SIZE 64 #define DBG_PACKET_SIZE 64 //Follow is the l...

usbview 查看USB设备信息

  • 2009年05月13日 20:34
  • 85KB
  • 下载

读取usb设备描述信息

#pragma comment(lib, "Setupapi.lib"),#pragma comment(lib, "hid.lib") #include "stdafx.h" ...
  • jiht594
  • jiht594
  • 2011年11月29日 16:15
  • 3992

Linux下,查看USB设备信息

首先需要将usbfs挂载一下,然后才能查看。 $ mount -t usbfs none /proc/bus/usb $ cat   /proc/bus/usb /device 查看到的信息,如下所示...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:取USB设备信息-2
举报原因:
原因补充:

(最多只允许输入30个字)