如何在Visual C++中列出所有连接的USB设备

vin*_*ber 3 windows usb cdc visual-studio visual-c++

简而言之:我需要通过PID/VID检测我的USB CDC设备的热插拔事件,并获取由Windows在Visual C++中创建的相应虚拟COM端口,最后创建一个dll.

我有一个USB CDC设备,我需要在Windows上连接/断开连接时收到通知.我的方法是使用RegisterDeviceNotification和"隐形"窗口来接收WM_DEVICECHANGE通知.到目前为止这部分工作正在进行

现在据我所知,我需要获取插入的USB设备列表,迭代它并使用我的PID/VID过滤掉设备?我假设我能够获得有关该设备的更多信息,包括COM端口?

是实现我使用SetupDi呼叫的目标的唯一方法setupapi.h吗?使用WDK/DDK是实现目标的唯一途径吗?

一旦工作,我就在http://github.com/vinzenzweber/USBEventHandler上开源.Mac版已经上市!

vin*_*ber 5

通过在吨MSDN和一些调试无用文件的挖掘后,我发现缺少的环节:来电的SetupDi在setupapi.h:更多的相关信息,以及源代码,适用于Mac和Windows,可以在我的USBEventHandler项目在发现github.com与源Mac和Windows.