阅读:2716回复:13
自己做一个设备弹出程序遇到麻烦!
最近同事情我帮他做一个弹出u盘的程序,要求是:给出盘符,找到相应u盘,然后将其弹出。
做了不少实验,最终没能成功。问题主要是无法通过盘符,找到相应的usb设备。盘符是一个存储卷的符号连接,调用QueryDosDevice()可以通过盘符找到存储卷的物理设备对象名,比如\Device\HarddiskVolume8。然后线就断了,连不下去了。最后能弹出的应该是一个usb接口的设备。我通过SetupDiGetClassDevs,SetupDiEnumDeviceInfo获得了u盘的设备信息元素的上下文结构,然后调用CM_Request_Device_Eject弹出设备实例。但是如何将盘符和设备实例关联起来,实在是难倒我了。请各位同仁帮忙,谢谢! |
|
|
沙发#
发布于:2004-06-22 16:27
研究一下SCSI协议。:)
|
|
板凳#
发布于:2004-06-25 20:49
有点夸张吧?我只需要通过盘符找到相应的usb设备实例。
当我们插入u盘后,系统托盘中会出现一个小箭头图标,用鼠标点击它,会弹出所有可以弹出的设备的描述,u盘设备还会带上系统分配给它的盘符,比如“USB Mass Storage(H:)”。也许我可以换一种问法,当我们点击这个小箭头之后,发生了什么动作,是怎样实现这些动作的? |
|
|
地板#
发布于:2004-07-02 16:32
楼主解决了没有啊?
我也想知道, 给分. |
|
地下室#
发布于:2004-07-08 20:40
目前还没解决,请教了一些高人,有两种观点,一中认为可以注册表,二是
|
|
|
5楼#
发布于:2004-07-08 20:50
目前还没解决,请教了一些高人,有两种观点,一种认为可以从注册表中寻找相关信息,第二种观点认为可以通过询问usb总线驱动或usbstor驱动来获取相关信息。
请各位楼上楼下楼前楼后的兄弟多给与关注,多提供帮助! |
|
|
6楼#
发布于:2004-07-31 01:58
问题解决了
|
|
|
7楼#
发布于:2004-08-02 15:39
兄弟 怎么解决的 能否说给我们听听? 不胜感激!
|
|
8楼#
发布于:2004-08-06 23:09
兄弟 怎么解决的 能否说给我们听听? 不胜感激! 先给点提示,应用BusRelations和RemovalRelations两种类型的IRP_MN_QUERY_DEVICE_RELATIONS对相关设备对象进行查询,可以得到返回结果。可参看ddk\\src\\\general\\toaster\\toastmon\\toastmon.c中的ToastMon_GetTargetDevicePdo()函数。 具体的实现代码在实验室,等取回来再给大家贴出来!少等! |
|
|
9楼#
发布于:2005-01-27 16:07
兄弟,小弟也遇到了这麻烦,可拜读下源代码不,不胜感激:)谢谢了
|
|
驱动老牛
![]() |
10楼#
发布于:2005-01-28 11:46
send IRP_MN_REMOVE_DEVICE IRP to bus device
|
|
11楼#
发布于:2005-01-28 14:06
谢谢10楼,主要是怎样根据U盘盘符得到相应U盘的设备实例
|
|
12楼#
发布于:2007-11-01 17:24
![]() |
|
13楼#
发布于:2007-11-02 12:56
Windows DDK 3790.1830 ??
|
|
|