U盘刚插入电脑时,在出现盘符之前,怎样用DeviceIoControl和驱动通信?????

zhouzhaofu   2008-12-20 12:33 楼主
U盘刚插入电脑时,在出现盘符之前,怎样用DeviceIoControl和驱动通信?????
DeviceIoControl的一个参数是u盘的句柄,此时没有盘符,怎样获得u盘的句柄呢??

回复评论 (19)

引用: 引用楼主 slek 的帖子:
U盘刚插入电脑时,在出现盘符之前,怎样用DeviceIoControl和驱动通信?????
DeviceIoControl的一个参数是u盘的句柄,此时没有盘符,怎样获得u盘的句柄呢??


驱动是以文件形式打开的。
要获得句柄
就要
hfilehandle=Createfile(...)
DeviceIoControl(hfilehandle....)

没有出现盘符,这个说明驱动没有加载成功。估计不能获得句柄。

上面函数参数,楼主仔细看看MSDN
点赞  2008-12-20 13:45
没有其他办法吗?

u盘插入时,我在usb驱动中拦截,可以获得u盘信息,但此时还没有盘符出现,应用层有没有办法和usb驱动通信呢?
点赞  2008-12-20 15:09
帮顶!
点赞  2008-12-21 03:24
谢谢诶
点赞  2008-12-21 10:41
mark
点赞  2008-12-21 12:42
mark
点赞  2008-12-21 12:42
这个时候好像不调用DeviceIoContorl函数,而调用的是SystmControl,具体我不太清楚!
点赞  2008-12-21 13:20
DeviceIoContorl是应用层调用的,SystmControl是驱动层的。
点赞  2008-12-21 23:32
kan kan
点赞  2008-12-22 12:58
也就是说在应用层无法完成,可以考虑在驱动层完成啊!
U盘插入,可以引发中断,然后处理做想做的事。
点赞  2008-12-23 22:14
不明白为什么不能在盘符起来后再做呢、?

我觉得这个难办,如果是在wince下,这个阶段还在初始化内核。驱动都没有加载,任何方法都不能和驱动通信。
点赞  2008-12-23 22:28
我也好奇为什么要这么急着做?
点赞  2008-12-25 20:58
那请问怎样在盘符出现后阻塞U盘呢,就是让系统处于等待状态?

WaitForSingleObject在DeviceControlComplete里面用不了,level等级不够。
点赞  2008-12-25 23:29
引用: 引用 13 楼 slek 的回复:
那请问怎样在盘符出现后阻塞U盘呢,就是让系统处于等待状态?

WaitForSingleObject在DeviceControlComplete里面用不了,level等级不够。


对这个事情我不是很了解。这个东西你要找一些内核的函数才行,我还没有到那个级别呢
点赞  2008-12-26 00:00
对了,你这个是什么系统啊?什么平台?windows?
————————————————————————————————
如果是windows去驱动开发网估计有人能够解决,那里很多人研究内核的。
点赞  2008-12-26 00:01
帮顶
点赞  2008-12-26 08:49
帮顶
点赞  2008-12-26 08:49
mark
点赞  2008-12-26 17:14
windows平台
驱动开发网人气太差了,唉,做驱动的人如果能像做应用的人一样多,一样有共享精神就好了。
点赞  2008-12-26 21:54
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复