两种自动检测USB设备的添加和移除的方法

本文介绍了通过监测系统盘符变化来判断USB设备插入和移除的方法,主要应用于C++Builder和Windows环境下,利用编程检测disk路径变化以识别U盘操作。
摘要由CSDN通过智能技术生成

By jingzhongrong

今天看到一篇文章里面说到的检测U盘插入的方法

文章中使用的是用循环不停检测系统盘符的变化,然后根据盘符对应的类型来判      断。                                                       

下面是大概的方法

 

//检测是否为可移动磁盘 

int CheckDisk(char * disk) 



  
if(GetDriveType(disk)==DRIVE_REMOVABLE)return 0


   
return -1


}


int
 dectect() 

{     
char buf[10
]; 

       DWORD lod
=
GetLogicalDrives();  

       
if (lod!=0


        { 

        
for (int i=0;i<26;i++


               { 

                      
if ((lod & 1)==1


                     { 

 

                           sprintf(buf,
"%c",'A'+
i);  

                            strcat(buf,
":/"
); 

                             
if(!
CheckDisk(buf))  

                            {   

                                    
if(GetVolumeInformation(buf,0,0,0,0,0,0,0
)) 

                                    { 

                                         
//检测到U盘并且驱动器已准备就绪 


 


                                    }    

                            } 

                      }  

                     lod
=lod>>1 ;  

              } 

 } 

        
return 0


 } 

//然后使用

while(1
)

{

    dected();

  
//此处可以添加Sleep函数停止一段时间,以免过高占用CPU


}

 

下面是我的实现,不使用循环,使用C++Builder完成,

原理是当U盘插入或移除的时候

Windows会生成一条信息WM_DEVICECHANGE

处理此消息便可

使用VC的可以定义一个WindowProc的回调函数,其中的实现与下面的WndProc类似

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值