如果u盘被禁用,插入电脑的时候,系统会发送什么消息?

firendlys 2012-02-14 03:55:43

注意前提:插入电脑的u盘是处于“禁用”状态的!!

当u盘没有被禁用时,插入到电脑,windows会发送 WM_DEVICECHANGE 消息。
但是如果u盘是被禁用的,就不会发送此消息了,那么此时发送的是什么消息呢?

我发现,当一只被禁用的u盘插入电脑时,设备管理器那里会立即刷新并显示这只u盘,当拔出u盘的时候,这只禁用的u盘又会立即消失,如果不是设备管理器在后台不断扫描usb设备列表的话(我相信不可能这样做),就是说明当u盘(已经被禁用的u盘)插入电脑时,系统肯定有消息通知各个应用程序。

补充:所谓的“插入禁用的u盘”,是指,一只u盘在设备管理器被禁用之后,没有启用就被拔出电脑。当同一台电脑重新插入这只u盘的时候,该u盘的状态依然是“禁用”的,只有到设备管理器“启用”后才能使用。



...全文
327 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly4free 2012-02-27
  • 打赏
  • 举报
回复
插入U盘的时候,
因为本身是属于 USB接口,那么首先会有 USB 设备 的消息.
接下来,因为是存储类设备,所以会有一个 USBSTOR 设备的消息,这个在注册表里有节点,但 SetupDiXXX函数不认他,我研究过,和 DiskDrive 靠近(通过WDM的 类过滤驱动)。

如果设备管理器没有找到匹配的设备配置信息(注册表某项),那么就会提示发现新硬件(前一步也如此),然后继续安装驱动,对于U盘,系统自带驱动,就是个配置过程。
如果发现了对应的配置信息,那么就应用,当前是禁用,那么就直接禁用了。否则继续后续的驱动加载,比如文件系统。


firendlys 2012-02-24
  • 打赏
  • 举报
回复
这么久了,没有人知道么?
star19678051 2012-02-14
  • 打赏
  • 举报
回复
从驱动层解释的话,U盘插入时是通过WDK驱动收到一个PNP的电源神马即插即用消息的,那些都是驱动层的IRP消息,设备驱动处理好消息后,挂载在其上的功能驱动就会接收到其返回,这些功能驱动一般都有接口,应用程序只需要读取其接口就能检测到,貌似是这个样
周晓荣 2012-02-14
  • 打赏
  • 举报
回复
这个问题实在是有点难度!

我研究完再告诉你!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧