hgw
hgw
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2009-05-15
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1866回复:7

有一个问题困扰我很久了,我问了很长时间也没人能解决

楼主#
更多 发布于:2002-04-30 16:38
我要在程序中识别不同的USB设备,然后把该设备的连接成功的信息和该usb设备的盘符(E:,F:之类的)当作参数传递,该usb设备的驱动已经写好了,插在pc上可以正常使用,并且会自动生成盘符,不过该盘符不是固定的,随着不同的情况(如安装了虚拟光碟或其他usb设备)盘符会自动变化,那么我如何才能正确的获得我需要的信息(该设备的连接成功的信息和该usb设备的盘符)呢?
    写usb驱动的人告诉我,这个usb的hardwareID是不变的,于是我利用windowsAPI函数SetupDiGetClassDevs,SetupDiEnumDeviceInfo,SetupDiEnumDeviceInfo获取该设备的hardwareID,于是能够正确的判断该usb设备,可是就是无法获得盘符信息,我试了各种方法,包括GetVolumeInformation,QueryDosDevice,GetDriverType,查注册表等等,就是无法同时获得设备的连接成功的信息(即该设备的hardwareID)和该usb设备的盘符,另外我还试了CreateFile和DeviceIoConctrl,还是不行,我查遍了整个MSDN也找不到答案,而我又是刚刚学写驱动程序,到底应该怎么做?万分感谢
hgw
hgw
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2009-05-15
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-04 09:51
help?
free_best
驱动牛犊
驱动牛犊
  • 注册日期2002-03-10
  • 最后登录2002-12-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-04 11:18
首先声明:我不是高手。

我看了以下,控制面板中--系统--磁盘驱动器,如能映射成盘符,则能找到相应设备,打开它,将“起始盘符”,“结束盘符”设为一样就可以了。

能否将源程序E_mail给我,我仔细看一下,然后共同学习、研究


free_best@sina.com
free_best
hgw
hgw
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2009-05-15
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-04 13:54
我希望由程序去取,而不是改变用户机器的设置,另2000下没有这项设置了
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-05 23:55
你的app会一直运行吗?
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
hgw
hgw
驱动牛犊
驱动牛犊
  • 注册日期2002-04-23
  • 最后登录2009-05-15
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-06 09:17
我的app不会一直运行,用户可以随便打开或关闭,不会在我的app运行的过程中我需要知道这些信息
danielxu22
驱动中牛
驱动中牛
  • 注册日期2002-11-22
  • 最后登录2014-03-24
  • 粉丝0
  • 关注1
  • 积分2分
  • 威望18点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-11 11:13
我记得在哪本authorware6.0书上看到过你的这种情况,查找最后的盘符,只不过它是用authorware实现的,你去看看,可能对你的思路有帮助了
今天我发现我家的金鱼淹死了,:(
MacWin
驱动中牛
驱动中牛
  • 注册日期2002-12-16
  • 最后登录2009-05-27
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望44点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-06-19 12:04
----------引用-----------------------

Q:
larryhh:
如果在pc上的usb口接一个hub扩展到8个端口,都插上u盘,则会有8个可移动磁盘的逻辑盘符出现,那我如何分辨哪一个盘符对应的是哪个端口呢,请大虾们指点救命
A:
rayyang2000:
应该参考DDK中storage的内容,scsi的资料也要用到。
主要是发送scsi pass through和aspi。

2k下用CreateFile可以直接打开每个drive,用inquiry看看是不是你要的u盘。如果是,对应的CreateFile的第一个参数就是drive letter。详细的code可以看ddk中的spti代码。

9x下面就蛮复杂的,要用aspi代替spti做上面的事情。其中,SC_GET_DISK_INFO的SRB_Int13DriveInfo就是drive letter。但按照ddk的解释,似乎只有在某些bit flag符合的情况下,这个参数才有效。9x ddk里面有sample codes。

----------引用------------------------

rayyang2000的方法是可以找出特定的U盘(我已实现),但是我现在的情况是要把插在PC上的所有的U盘的盘符和它的VID匹配起来.请问有什么方法?谢谢!


请讨论:MSN:xinjian_chen@hotmail.com

Chen
游客

返回顶部