2010-05-06 21 views
5

My C# uygulamasının, aynı üreticinin aynı ürünü olan birden fazla USB aygıtını yönetmesi gerekir. Bir USB aygıtının hangi bağlantı noktasına takılı olduğunu nasıl anlarım?

kullanıcı benim cihazlarının 3 takılır ve sonra içlerinden biri, ben çıkartılmış olabilir 3 cihazların hangi bilmeniz gereken unplugs olursa

. Ancak, aygıtları kaydettirdiğimde ve WM_DEVICECHANGE bildirimlerini aldığımda, DBT_DEVTYP_DEVICEINTERFACE öğesinden döndürülen veriler her aygıt için aynıdır. Üste |

cihazlar gelmesi ya da sorunumu çözecek kaldırıldığında ben USB bağlantı noktası bilgi alabilir, ama bunu yapmanın bir yolunu bulamazsa.

herhangi bir öneriniz?

+0

USB aygıt sürücüsü bir seri numarası veya başka bir tanımlayıcı bilgi almak için herhangi bir yöntem mevcut mu? – whatsisname

cevap

2

C# hakkında bir şey bilmiyorum, ancak normal C + Win32'de, bir veri yolu numaralandırmak ve veri yolundaki tüm aygıtları araştırmak için SetupAPI functions kullanabilirsiniz. Ana bilgisayar köprüsünü numaralandırıyorsanız, aygıtlarınızı USB hiyerarşisinde bulabilmeniz gerekir. Ben bağlantılı O makale nasıl API kullanılacağını gösterir ve AramaSetupDiGetClassDevsişlev bakarsak() sistem çağrısı, USB Sistem veri yolu seçeneği vardır (yani parametre 2, "Enumerator"). Windows Driver Kit indirirseniz

Ayrıca, ben USB veri yolu numaralandırmak ve her USB aygıtı hakkında bilgi verebilir örnek bir uygulama olduğunu biliyoruz. Uygulama, SetupAPI kullanır ve iyi bir başvuru kaynağı olabilir.

Microsoft kademeli olarak .NET sınıfları olarak Win32 API maruz ettiğini biliyorum, ama bu API hakkında emin değilim.

+0

Win32 API işlevlerini C# .Net'de kullanabilirsiniz. Platform Invoke Öğreticisi: http://msdn.microsoft.com/en-us/library/aa288468(VS.71).aspx – Brian

İlgili konular