Cómo enumerar todos los dispositivos USB conectados en Visual C ++
-
02-10-2019 - |
Pregunta
En breve: necesito para detectar eventos de conexión en caliente de mi dispositivo CDC USB por PID / VID y obtener el puerto COM virtual correspondiente que fue creado por Windows en Visual C ++ y al final crear un archivo DLL .
Tengo un dispositivo USB CDC, que necesito para ser notificado de cuando está conectado / desconectado en Windows. Mi enfoque es utilizar RegisterDeviceNotification
y una ventana de "invisible" para recibir notificaciones WM_DEVICECHANGE
. Esta parte está trabajando hasta ahora.
Ahora por lo que me di cuenta que necesito para obtener la lista de dispositivos USB que se enchufa, iterar sobre ella y filtrar los dispositivos con mi PID / VID? Asumo que soy entonces capaz de obtener más información sobre el producto, incluidos el puerto COM?
Es la única manera de lograr mi objetivo de llamadas utilización SetupDi
en setupapi.h
? Está utilizando WDK / DDK la única manera de lograr mi objetivo?
Tan pronto como que está trabajando I de código abierto en http://github.com/vinzenzweber/USBEventHandler . La versión para Mac ya está disponible!
Solución
Después de cavar a través de toneladas de documentación inútil en MSDN y algunos de depuración he encontrado el eslabón perdido: llamadas SetupDi en setupapi.h: Mas informaciones, así como el código fuente para Mac y Windows se pueden encontrar en mi proyecto USBEventHandler a github.com con las fuentes para Mac y Windows.