您的位置:首页 > 其它

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

2014-04-03 16:46 253 查看
#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 的时候,可能会有串口消失,所以也需要重新扫描

串口
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: