views:

39

answers:

2

What is the best way to scan the local Windows system for attached USB devices using C++? I need to get a list of Vendor and Product IDs to match against the my device's IDs. If there is a way to scan for a specific VID/PID combination, that would be even better. My end goal is to retrieve the virtual COM port Windows has assigned to the device. If there's a way to do all that, it would be fantastic. As always, examples are much appreciated. Thanks.

+1  A: 

This is pretty much an MSDN example of what you want:

http://msdn.microsoft.com/en-us/library/ff558728%28VS.85%29.aspx

It seems you'll need the WDK if you want to access this kind of functionality (every MSDN search I can think of suggests this).

rubenvb
If you use this, note that there is a bug report here - http://support.microsoft.com/kb/838100
Steve Townsend
@Steve: that's pretty funny, if not hilarious :)
rubenvb
I am sure the example you cited is still useful so +1 anyhoo
Steve Townsend
A: 

I was able to resolve this by querying WMI for the needed information. Basically, I was able to start with Microsoft's example code, modify it a bit, and finally build it into my own class that does what I need.

http://msdn.microsoft.com/en-us/library/aa390423%28v=VS.85%29.aspx

This list of Computer System Hardware Classes was also helpful:

http://msdn.microsoft.com/en-us/library/aa389273%28v=VS.85%29.aspx

I used the WMI Code Creator to preview the results of what looked to be promising classes.

In the end I used the following:

  • Namespace: root\CIMV2
  • Class: Win32_SerialPort
  • Property: PNPDeviceID and DeviceID
Jim Fell