MFC检测USB热插拔

在网上找了很久,发现这个方法还是可以实现的,但是必须要知道USB设备的GUID,我准备写下来留作以便以后查询

BOOL CXXdlg::OnDeviceChange(UINT nEventType,DWORD dwData)
{
DEV_BROADCAST_DEVICEINTERFACE* dbd = (DEV_BROADCAST_DEVICEINTERFACE*) dwData;
//这里进行信息匹配,比如guid等
//针对各个事件进行处理.
switch (nEventType)
{
case DBT_DEVICEREMOVECOMPLETE:
{
int i = 0;
}
break;
case DBT_DEVICEARRIVAL:
{
int j = 0;
}
break;
default:
break;
}
return TRUE;
}


在BEGIN_MESSAGE_MAP中增加

ON_WM_DEVICECHANGE()


在OnInitDialog中注册设备

static const GUID GUID_DEVINTERFACE_LSIT[] = 
{
//GUID_DEVINTERFACE_USB_DEVICE
{0X36FC9E60,0xC465,0X11CF,{0X80,0X56,0X44,0X45,0X53,0X54,0X00,0X00}},
//GUID_DEVINTERFACE_DISK
{0X53F56307,0XB6BF,0X11D0,{0X94,0XF2,0X00,0XA0,0XC9,0X1E,0XFB,0X8B}},
//GUID_DEVINTERFACE_HID
{0X4D1E55B2,0XF16F,0X11CF,{0X88,0XCB,0X00,0X11,0X11,0X00,0X00,0X30}},
//GUID_NDIS_LAN_CLASS
{0XAD498944,0X762F,0X11D0,{0X8D,0XCB,0X00,0X00,0X4F,0XC3,0X35,0X8C}}
};
DEV_BROADCAST_DEVICEINTERFACE DevInt;
memset(&DevInt,0,sizeof(DEV_BROADCAST_DEVICEINTERFACE));
DevInt.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
DevInt.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
for (int i=0;i<sizeof(GUID_DEVINTERFACE_LSIT)/sizeof(GUID);i++)
{
DevInt.dbcc_classguid = GUID_DEVINTERFACE_LSIT[i];//usb设备的GUID
RegisterDeviceNotification(this->m_hWnd,&DevInt, DEVICE_NOTIFY_ALL_INTERFACE_CLASSES);
}


在xx.h

afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData);



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值