串口插拔自动检测程序思路

#include <dbt.h>

HDEVNOTIFY  hDevNotify; //硬件插拔句柄

//注册消息
DEV_BROADCAST_DEVICEINTERFACE dbdi;
  memset(&dbdi,0,sizeof(dbdi));
  dbdi.dbcc_size = sizeof(dbdi);
  dbdi.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
  hDevNotify = RegisterDeviceNotification(Handle,&dbdi,DEVICE_NOTIFY_WINDOW_HANDLE|DEVICE_NOTIFY_ALL_INTERFACE_CLASSES);


注册之后,就能收到 WM_DEVICECHANGE 消息了


if(Message.Msg == WM_DEVICECHANGE) // 硬件插拔
{
  if(Message.WParam==DBT_DEVICEARRIVAL) // 新硬件插入
  {
  }
  if(Message.WParam==DBT_DEVICEREMOVECOMPLETE) // 硬件拔出
  {
  }
}


注销硬件插拔事件


if(hDevNotify)
   {
     UnregisterDeviceNotification(hDevNotify);
     hDevNotify = NULL;
   }
注销之后,就收不到插拔事件了


WM_DEVICECHANGE 是需要注册了使用的,不注册是收不到消息的


WM_DEVICECHANGE 消息里面,WParam 等于 DBT_DEVICEARRIVAL 的时候,说明有新硬件,在此


处扫描新串口
WParam 等于 DBT_DEVICEREMOVECOMPLETE 的时候,可能会有串口消失,所以也需要重新扫描


串口
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值