获取用USB to IDE 连接的存储设备的装置信息(厂商、序列号什么的)

获取用USB to IDE 连接的存储设备的设备信息(厂商、序列号什么的)
我的内置刻录机,由于供电问题,让我挪到了机箱外面。
我自己编程实现了,获取接入计算机的USB设备的信息,
在识别我这种连法的刻录机时,出现了问题,厂商信息被识别成"USB TO IDE",
iProduct、iSerialNumber为0
(用usbview也是这样结果)

但是,Windows自己的“停用设备”对话框,却能正确显示相关信息,windows是怎么获取到的
这让我想起,前一阵,有一个U盘,同样iVender, iProduct都为0,但是 “停用设备”对话框却能显示其型号信息
点击查看图(baidu hi)
(。该型号信息,与注册表中 SYSTEM\CurrentControlSet\Enum\USBSTOR下的相关键的 "FriendlyName" 键值相同)

各位,有遇到这种情况的吗,有没有个解决思路?
------解决方案--------------------
你自己是用setupApi获取的?
系统貌似是用USB设备发送IOCTL获取信息的
------解决方案--------------------
我是用IOCTL获取USB设备信息的(IOCTL_USB_GET_NODE_CONNECTION_NAME 等信息)

问题是:
此时,那个USB设备,是 "USB to IDE "这个东西,连着我的IDE硬盘,我向 "USB to IDE "这个东西 发送控制码,返回的是 它本身的信息,而不是它带着的硬盘的信息

这样,我该如何做呢?谢谢了啊~
------解决方案--------------------
我目前的实现方法是在 DBT_DEVICEARRIVAL 里 捕获 DBT_DEVTYP_DEVICEINTERFACE 设备类型的接入
这样通过一系列方法,得到了该usb设备本身的信息

现在有个问题:
显示设备组件
参考上图。是个树形结构,系统自己有法子区分加载的卷属于哪一个设备的了(到底根据什么联系的呢?)
我想这个信息不是以USB设备标准保存在指定位置,可能还得需要 IOCTL_STORAGE_XXX 码的支持?
------解决方案--------------------
用SetupAPI枚举设备看看,应该可行
------解决方案--------------------
哈哈,经过N个小时努力,终于弄明白了一点。

查看一个usb设备是不是 移动存储, 我的想法就是,如果产生了卷,那么就是移动存储。
可是怎么判断呢,
只好在 case DBT_DEVTYP_VOLUME: 里获取新增的盘符,然后 经过N步 获得其设备实例句柄,进而得到其在设备树上的父节点的设备实例句柄 hParentInst

而在之前接收到的 case DBT_DEVTYP_DEVICEINTERFACE 里经过M步骤可以得到 对应的SP_DEVINFO_DATA结构体数据,其成员DevInst的值就是 hParentInst。

说到这里,可能有人觉得和贴子标题没什么关系。。。我其实也不太确定接下来的试验会不会成功,我再想想吧。。。
------解决方案--------------------
使用 IOCTL_STORAGE_QUERY_PROPERTY 可以通过盘符来获得对应 硬件设备的vender、product等属性。
我再在 DBT_DEVTYP_VOLUME 里处理新卷增加吧。。。

获得后在用 5楼的 比较判断,保存USB使用记录。。

希望那个远在北京的没见过面的客户的手里的U盘,可以通过这个方式获得其牌子信息……
------解决方案--------------------
该回复于2012-04-19 16:50:43被版主删除
------解决方案--------------------
菜鸟求代码:2415499300@qq.com