注意前提:插入电脑的u盘是处于“禁用”状态的!!当u盘没有被禁用时,插入到电脑,windows会发送 WM_DEVICECHANGE 消息。
但是如果u盘是被禁用的,就不会发送此消息了,那么此时发送的是什么消息呢?我发现,当一只被禁用的u盘插入电脑时,设备管理器那里会立即刷新并显示这只u盘,当拔出u盘的时候,这只禁用的u盘又会立即消失,如果不是设备管理器在后台不断扫描usb设备列表的话(我相信不可能这样做),就是说明当u盘(已经被禁用的u盘)插入电脑时,系统肯定有消息通知各个应用程序。补充:所谓的“插入禁用的u盘”,是指,一只u盘在设备管理器被禁用之后,没有启用就被拔出电脑。当同一台电脑重新插入这只u盘的时候,该u盘的状态依然是“禁用”的,只有到设备管理器“启用”后才能使用。
解决方案 »
- 不同字段的两个表的合并
- 我用vc++6.0建了个MFC的DLL文件 问题来了
- 如何捕捉到在串口上接的IC卡读卡器刷卡这一事件?
- 为什么CXXXView.h中没有#include "CXXXDoc.h",却可以用CXXXDoc 来定义函数 CDSPPLCDoc* GetDocument();自己的类却不能这样。
- 为什么在NT和XP下向串口的端口发送和读取数据会出错,内附程序
- 我是个初学者, 请问如何通过点击open读入位图?很急
- 谁精通图形编程???如何取位图的轮廓?
- 自考所获得的学位证书与国家任务正规在校生所获得的证书一致吗?
- 百思不得其解,再问一次????
- ADO 访问数据库出错
- 关闭一个窗口的时候会产生什么消息?由哪个函数响应?
- 如何检测一台设备是否连接到网络?能通过Ping设备IP来检测吗?
因为本身是属于 USB接口,那么首先会有 USB 设备 的消息.
接下来,因为是存储类设备,所以会有一个 USBSTOR 设备的消息,这个在注册表里有节点,但 SetupDiXXX函数不认他,我研究过,和 DiskDrive 靠近(通过WDM的 类过滤驱动)。如果设备管理器没有找到匹配的设备配置信息(注册表某项),那么就会提示发现新硬件(前一步也如此),然后继续安装驱动,对于U盘,系统自带驱动,就是个配置过程。
如果发现了对应的配置信息,那么就应用,当前是禁用,那么就直接禁用了。否则继续后续的驱动加载,比如文件系统。