注册设备通知不接收多个分区的事件

时间:2015-11-09 11:19:33

标签: c windows winapi mfc usb

我正在使用注册设备通知来接收USB插入/删除事件,以便我可以填充应用程序中的列表。以下是我的注册设备通知的示例代码:

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[i] = RegisterDeviceNotification(this->GetSafeHwnd(), &NotificationFilter, DEVICE_NOTIFY_WINDOW_HANDLE);
        if(!hDevNotify[i]) 
        {
            WCHAR wszNotifyMsg[70];
            wsprintf(wszNotifyMsg, L"%ls%d\n%ls%d", _T("Error in Registering Device Notification GUID Index:"),
                        i, _T("GetLastError:"), GetLastError());
            MessageBox(wszNotifyMsg);
        }
    }

当我使用简单的USB驱动器时,代码工作正常,我收到通知并获取所有逻辑磁盘并显示它。但是,当我为多个分区连接一个USB驱动器时,只有一个分区安装时我会收到通知,并且我在屏幕上显示它,1秒后计算机上安装了其他分区,但我没有收到任何事件。

你能告诉我我做错了什么吗?

抱歉我的英文。

0 个答案:

没有答案