كيفية سرد جميع أجهزة USB المرفقة في Visual C ++
-
02-10-2019 - |
سؤال
بالمختصر: أحتاج إلى اكتشاف أحداث السخرية من جهاز USB CDC الخاص بي بواسطة PID/VID والحصول على منفذ COM الظاهري المقابل الذي تم إنشاؤه بواسطة Windows في Visual C ++ وفي النهاية إنشاء DLL.
لدي جهاز USB CDC الذي يجب إخطاره عند الاتصال/فصله على Windows. مقاربي هو الاستخدام RegisterDeviceNotification
ونافذة "غير مرئية" لتلقيها WM_DEVICECHANGE
إشعارات. هذا الجزء يعمل حتى الآن.
الآن بقدر ما اكتشفت أنني بحاجة إلى الحصول على قائمة أجهزة USB التي يتم توصيلها ، وتكرارها وتصفية الأجهزة باستخدام PID/VID الخاص بي؟ أفترض أنني قادر على الحصول على مزيد من المعلومات حول الجهاز بما في ذلك منفذ COM؟
هي الطريقة الوحيدة لتحقيق هدفي للاستخدام SetupDi
مكالمات في setupapi.h
؟ هل استخدام WDK / DDK هو الطريقة الوحيدة لتحقيق هدفي؟
بمجرد أن يعمل ذلك ، فتحت المصدر http://github.com/vinzenzweber/usbeventhandler. إصدار MAC متاح بالفعل!
المحلول
بعد الحفر عبر أطنان من الوثائق غير المجدية في MSDN وبعض تصحيح الأخطاء ، وجدت الرابط المفقود: مكالمات setupdi في setupapi.h: يمكن العثور على المزيد من INFOS وكذلك رمز المصدر لنظام التشغيل Mac و Windows في مشروع UsbeventHandler الخاص بي على github.com مع مصادر لنظام التشغيل Mac و Windows.