tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
阅读:2574回复:13

自己做一个设备弹出程序遇到麻烦!

楼主#
更多 发布于:2004-06-21 23:37
最近同事情我帮他做一个弹出u盘的程序,要求是:给出盘符,找到相应u盘,然后将其弹出。

做了不少实验,最终没能成功。问题主要是无法通过盘符,找到相应的usb设备。盘符是一个存储卷的符号连接,调用QueryDosDevice()可以通过盘符找到存储卷的物理设备对象名,比如\Device\HarddiskVolume8。然后线就断了,连不下去了。最后能弹出的应该是一个usb接口的设备。我通过SetupDiGetClassDevs,SetupDiEnumDeviceInfo获得了u盘的设备信息元素的上下文结构,然后调用CM_Request_Device_Eject弹出设备实例。但是如何将盘符和设备实例关联起来,实在是难倒我了。请各位同仁帮忙,谢谢!

省元坊
supcent
驱动牛犊
驱动牛犊
  • 注册日期2003-12-18
  • 最后登录2005-11-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-22 16:27
研究一下SCSI协议。:)
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-25 20:49
有点夸张吧?我只需要通过盘符找到相应的usb设备实例。
当我们插入u盘后,系统托盘中会出现一个小箭头图标,用鼠标点击它,会弹出所有可以弹出的设备的描述,u盘设备还会带上系统分配给它的盘符,比如“USB Mass Storage(H:)”。也许我可以换一种问法,当我们点击这个小箭头之后,发生了什么动作,是怎样实现这些动作的?
省元坊
caesun
驱动小牛
驱动小牛
  • 注册日期2001-12-10
  • 最后登录2006-12-01
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值393点
  • 好评度21点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-07-02 16:32
楼主解决了没有啊?
我也想知道, 给分.
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-07-08 20:40
目前还没解决,请教了一些高人,有两种观点,一中认为可以注册表,二是
省元坊
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-07-08 20:50
目前还没解决,请教了一些高人,有两种观点,一种认为可以从注册表中寻找相关信息,第二种观点认为可以通过询问usb总线驱动或usbstor驱动来获取相关信息。

请各位楼上楼下楼前楼后的兄弟多给与关注,多提供帮助!
省元坊
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-07-31 01:58
问题解决了
省元坊
mboma
驱动牛犊
驱动牛犊
  • 注册日期2003-02-21
  • 最后登录2010-03-11
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-08-02 15:39
兄弟 怎么解决的 能否说给我们听听? 不胜感激!
tigerL
驱动小牛
驱动小牛
  • 注册日期2003-12-24
  • 最后登录2008-10-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望23点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-08-06 23:09
兄弟 怎么解决的 能否说给我们听听? 不胜感激!



先给点提示,应用BusRelations和RemovalRelations两种类型的IRP_MN_QUERY_DEVICE_RELATIONS对相关设备对象进行查询,可以得到返回结果。可参看ddk\\src\\\general\\toaster\\toastmon\\toastmon.c中的ToastMon_GetTargetDevicePdo()函数。

具体的实现代码在实验室,等取回来再给大家贴出来!少等!
省元坊
xzj_hn
驱动牛犊
驱动牛犊
  • 注册日期2005-01-10
  • 最后登录2005-02-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-01-27 16:07
兄弟,小弟也遇到了这麻烦,可拜读下源代码不,不胜感激:)谢谢了
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2005-01-28 11:46
send IRP_MN_REMOVE_DEVICE IRP to bus device
---内核开发合作或提供基础技术服务QQ:22863668 ---
xzj_hn
驱动牛犊
驱动牛犊
  • 注册日期2005-01-10
  • 最后登录2005-02-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-01-28 14:06
谢谢10楼,主要是怎样根据U盘盘符得到相应U盘的设备实例
maomingxu13
驱动牛犊
驱动牛犊
  • 注册日期2007-09-05
  • 最后登录2014-08-01
  • 粉丝0
  • 关注0
  • 积分89分
  • 威望79点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2007-11-01 17:24
LZ倒是把代码贴出来啊,让大家看看!贵在交流嘛
ubuntu_amateur
驱动牛犊
驱动牛犊
  • 注册日期2006-08-04
  • 最后登录2008-12-04
  • 粉丝0
  • 关注0
  • 积分970分
  • 威望98点
  • 贡献值0点
  • 好评度97点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2007-11-02 12:56
Windows DDK 3790.1830  ??
there is a will,there is a way
游客

返回顶部