刚开始做U盘识别这一块,每次插入拔出,nEventType总是返回7,网上找了好多资料,终于解决了:
1.有人说第一次返回7,第二次不是7,然后忽略了这个问题就结束了,这样的好像是正常的;
2.有人说要注册,还来了一些hid的库,好复杂,搞不通;
3.其实添加下面这个代码就解决问题了,具体的目前还没看,期待一起交流,也帮助其他菜鸟解决一下问题。
static
const
GUID GUID_DEVINTERFACE_LIST[] =
{
{ 0xA5DCBF10, 0x6530, 0x11D2, { 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED } },
{ 0x53f56307, 0xb6bf, 0x11d0, { 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b } },
{ 0x4D1E55B2, 0xF16F, 0x11CF, { 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30 } },
{ 0xad498944, 0x762f, 0x11d0, { 0x8d, 0xcb, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c } }
};
HDEVNOTIFY hDevNotify;
DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
ZeroMemory( &NotificationFilter,
sizeof
(NotificationFilter) );
NotificationFilter.dbcc_size =
sizeof
(DEV_BROADCAST_DEVICEINTERFACE);
NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
for
(
int
i=0; i<
sizeof
(GUID_DEVINTERFACE_LIST)/
sizeof
(GUID); i++)
{
NotificationFilter.dbcc_classguid = GUID_DEVINTERFACE_LIST[i];
hDevNotify = RegisterDeviceNotification(
this
->GetSafeHwnd(), &NotificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE);
if
( !hDevNotify )
{
return
FALSE;
}
}