Verwenden RegisterDeviceNotification() für ALLE USB-Geräte

Momentan habe ich einige code, der festlegt, up-Benachrichtigungen von angeschlossenen USB-HID-Geräte im Windows-Dienst (geschrieben in C++). Der code ist wie folgt:

   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);

Einer Meldung erhalten Sie über das SERVICE_CONTROL_DEVICEEVENT Veranstaltung. (Denken Sie daran, dies ist ein Service, damit keine WM_DEVICECHANGE).

Ich dachte, ich könnte geben Sie einfach die DEV_BROADCAST_DEVICEINTERFACE fahne in die RegisterDeviceNotification () - Aufruf, so würde es überschreiben dbcc_classguid und bekommen alle Geräte, aber es stellt sich heraus, dass das flag wird nicht unterstützt auf Windows 2000, das ist ein dealbreaker für mich. Auch ich vermute, dass das wieder mehr als nur USB-Geräte.

Wie sollte ich ändern, um alle USB-Geräte, nicht nur USB-HID? Sollte es so einfach wie nur geben Sie eine andere GUID? Gibt es auch eine GUID für alle USB?

InformationsquelleAutor Adam Haile | 2009-04-01
Schreibe einen Kommentar