With SetupDI APIs, you can get them with Class Guids like Camera Device, Imaging Device, USB
(System-Defined Device Setup Classes Available to Vendors)
I have only a Virtual Camera and I get it with Imaging Device {6bdd1fc6-810f-11d0-bec7-08002be2092f}
You can also use DirectShow
I had posted a sample adapted from MS SDK in this thread in VB (easy to convert into C#, function FindCaptureDevice)