Is there a sure way to programmatically differentiate between multiple cameras? I enumerate CLSID_VideoInputDeviceCategory and then I GetDisplayName on each IMoniker. What I found out is that with some cameras plugging them into different USB socket will return you different unique ID, that is, same camera plugged in into different sockets is regarded by my program as multiple cameras attached at different time. Other cameras plugged into different usb sockets are identified with the same GetDisplayName. On top of that, I have two identical cameras (Microsoft LifeCam HD-3000) and when I plug in different hardware pieces into the same socket I can't tell the difference which hardware piece was inserted.
So, is there a way to really tell the difference between multiple identical cameras if I plug them into the same usb port? And related reverse question: how can I id the same camera when I plug it in into different usb sockets?