В настоящее время у меня есть код, который устанавливает уведомления о подключенных USB-HID-устройствах в службе Windows (написанных на C++). Код выглядит следующим образом:Использование RegisterDeviceNotification() для ВСЕХ USB-устройств
GUID hidGuid;
HidD_GetHidGuid(&hidGuid);
DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
ZeroMemory(&NotificationFilter, sizeof(NotificationFilter));
NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
NotificationFilter.dbcc_classguid = hidGuid;
HDEVNOTIFY deviceNotify = RegisterDeviceNotification(StatusHandle, &NotificationFilter, DEVICE_NOTIFY_SERVICE_HANDLE);
Уведомление затем поступает через событие SERVICE_CONTROL_DEVICEEVENT. (Помните, что это Сервис, поэтому нет WM_DEVICECHANGE).
Я думал, что могу просто указать флаг DEV_BROADCAST_DEVICEINTERFACE в вызове RegisterDeviceNotification(), чтобы он переопределял dbcc_classguid и получал все устройства, но оказывается, что этот флаг не поддерживается в Windows 2000, что для меня является разбойником. Кроме того, я предполагаю, что это вернет больше, чем просто USB-устройства.
Как изменить это, чтобы получить все USB-устройства, а не только USB HID? Должно ли быть так просто, как просто дать другой GUID? Есть ли GUID для всего USB?