2010-05-06 67 views
5

我的c#應用程序必須管理多個USB設備,它們是同一製造商的同一產品。如何判斷USB設備插入哪個端口?

如果用戶插入我的設備中的3個,然後拔出其中一個,我需要知道3個設備中的哪個被拔出。

但是,當我註冊設備並收到WM_DEVICECHANGE通知時,從DBT_DEVTYP_DEVICEINTERFACE返回的數據對於每個設備都是相同的。

如果我可以得到USB端口信息,當設備到達或被刪除它會解決我的問題,但我找不到方法來做到這一點。

有什麼建議嗎?

+0

USB設備驅動程序是否提供任何方法來獲取序列號或任何其他識別信息? – whatsisname 2010-05-06 18:32:50

回答

2

我對C#一無所知,但在常規C + Win32中,您可以使用SetupAPI functions來枚舉總線並探測總線上的所有設備。如果枚舉主橋,則應該能夠在USB層次結構中找到您的設備。我鏈接的那篇文章向您展示瞭如何使用API​​,如果您查看SetupDiGetClassDevs()系統調用,則可以選擇USB系統總線(即參數2,「枚舉器」)。另外,如果您下載Windows驅動程序工具包,我知道它有一個示例應用程序,它可以枚舉USB總線並提供有關每個USB設備的信息。該應用程序使用SetupAPI,它可能是一個很好的參考。

我知道Microsoft已經逐漸將Win32 API公開爲.NET類,但我不確定這個API。

+0

您可以在C#.Net中使用Win32 API函數。平臺調用教程:http://msdn.microsoft.com/en-us/library/aa288468(VS.71).aspx – Brian 2010-05-06 18:50:42

相關問題