注意前提:插入电脑的u盘是处于“禁用”状态的!!当u盘没有被禁用时,插入到电脑,windows会发送 WM_DEVICECHANGE 消息。
但是如果u盘是被禁用的,就不会发送此消息了,那么此时发送的是什么消息呢?我发现,当一只被禁用的u盘插入电脑时,设备管理器那里会立即刷新并显示这只u盘,当拔出u盘的时候,这只禁用的u盘又会立即消失,如果不是设备管理器在后台不断扫描usb设备列表的话(我相信不可能这样做),就是说明当u盘(已经被禁用的u盘)插入电脑时,系统肯定有消息通知各个应用程序。补充:所谓的“插入禁用的u盘”,是指,一只u盘在设备管理器被禁用之后,没有启用就被拔出电脑。当同一台电脑重新插入这只u盘的时候,该u盘的状态依然是“禁用”的,只有到设备管理器“启用”后才能使用。
解决方案 »
- 请教:如何从一个CPoint对象中获得它的横、纵坐标?
- mfc的对话框
- nat对UDP端口的限制问题
- ftpopenfile函数的问题
- CRichEditCtrl生成的rtf文件,如何获得文件中的图片(jpg、gif、bmp等)
- 请教如何在组合框的编辑控件中设定光标位置
- 初级问题-怎样才能让VC编译后的EXE程序在别人未装过VC的机子上执行?
- 提个很弱智的问题,那位高手麻烦回答一下
- 问一下VC++的调试模式与非调试模式有什么不一样的。。
- 学java 用什么工具好呢?VJ++还是JBiulder?还是……
- 关闭一个窗口的时候会产生什么消息?由哪个函数响应?
- 如何检测一台设备是否连接到网络?能通过Ping设备IP来检测吗?
因为本身是属于 USB接口,那么首先会有 USB 设备 的消息.
接下来,因为是存储类设备,所以会有一个 USBSTOR 设备的消息,这个在注册表里有节点,但 SetupDiXXX函数不认他,我研究过,和 DiskDrive 靠近(通过WDM的 类过滤驱动)。如果设备管理器没有找到匹配的设备配置信息(注册表某项),那么就会提示发现新硬件(前一步也如此),然后继续安装驱动,对于U盘,系统自带驱动,就是个配置过程。
如果发现了对应的配置信息,那么就应用,当前是禁用,那么就直接禁用了。否则继续后续的驱动加载,比如文件系统。