title: Use RegisterDeviceNotification() for ALL USB devices
body: <p>I currently have some code that sets up notifications of connected USB HID devices within a Windows Service (written in C++).  The code is as follows:</p>
  
  <pre><code>   GUID hidGuid;
     HidD_GetHidGuid(&amp;hidGuid);
  
     DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;
     ZeroMemory(&amp;NotificationFilter, sizeof(NotificationFilter));
     NotificationFilter.dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
     NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
     NotificationFilter.dbcc_classguid = hidGuid;
     HDEVNOTIFY deviceNotify = RegisterDeviceNotification(StatusHandle, &amp;NotificationFilter, DEVICE_NOTIFY_SERVICE_HANDLE);
  </code></pre>
  
  <p>A notification is then received via the SERVICE_CONTROL_DEVICEEVENT event. (Remember, this is a Service so no WM_DEVICECHANGE).</p>
  
  <p>I thought I could just specify the DEV_BROADCAST_DEVICEINTERFACE flag in the RegisterDeviceNotification() call so it would override dbcc_classguid and get all devices, but it turns out that that flag is not supported on Windows 2000, which is a dealbreaker for me.  Also, I'm guessing that that would return more than just USB devices.</p>
  
  <p>How should I modify this to get <em>all</em> USB devices, not just USB HID?  Should it be as simple as just giving a different GUID?  Is there even a GUID for all USB?</p>