我正在使用注册设备通知来接收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秒后计算机上安装了其他分区,但我没有收到任何事件。
你能告诉我我做错了什么吗?
抱歉我的英文。