找回密码
 加入
搜索
查看: 1434|回复: 4

请教如何检测移动存储设备的存在与否??

[复制链接]
发表于 2009-12-17 18:22:10 | 显示全部楼层 |阅读模式
本帖最后由 llztt 于 2009-12-17 23:36 编辑

机房有时需要禁用U盘、移动硬盘等移动存储,于是试图做个常驻内存的程序,循环检测是否存在这些设备然后直接锁定,但检测代码遇到难题。。

DriveGetDrive( "REMOVABLE" ):会包含软驱,因部分机器还有软驱(老机房),在循环检测时,软驱读盘一直响个不停。。。放弃之。。

Pusofalse大大的安全删除U盘,测试通过了,API好复杂,呵呵,不知道可否精简出个单函数,只返回个已有移动U盘的数组啊,因为要循环检测,怕占系统资源,呵呵

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2009-12-17 19:07:28 | 显示全部楼层
插入或弹出U盘(或其他设备)时,系统会广播WM_DEVICECHANGE (0x219)消息,可以创建一个GUI窗口,并注册接收WM_DEVICECHANGE消息。当消息出现时,调用_CM_Enumerate_Physical_Disks函数枚举物理磁盘(不包含软盘),返回一个2维数组,其中的$aArray[x][4]元素如果为TRUE,说明此盘是U盘或移动硬盘。如果要安全删除,用_CM_Query_And_Remove_SubTree/_CM_Request_Device_Eject两个函数。强制卸载用_SetupDiRemoveDevice(指定第3个参数为TRUE为强制卸载)。
 楼主| 发表于 2009-12-17 23:35:52 | 显示全部楼层
呵呵,万分感谢哈,先结贴,再细看
大大是总版主不缺钱,就不给你加了哈
发表于 2009-12-18 09:21:08 | 显示全部楼层
学习了
发表于 2009-12-19 14:55:52 | 显示全部楼层
很好啊,我也来学习一下,回去试试看
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2025-1-12 12:24 , Processed in 0.079480 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表