В настоящее время у меня есть некоторый код, который устанавливает уведомления о подключенных устройствах USB HID в службе Windows (написано на C ++). Код выглядит следующим образом:
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?