2014-01-26 84 views
4

由於我安裝了數十個虛擬串行(COM)端口,其中一半是藍牙設備,因此我想知道哪個端口屬於哪個設備,以及它是直接連接還是通過藍牙連接。如何獲得有關Windows中串行(COM)端口的特定信息?

因此,我對所有串行端口的普通枚舉不感興趣,它只會顯示'COM'+相應數字的列表,但是該設備的真實名稱和其設備ID(其中可以發現有關是否通過USB或藍牙連接的信息

雖然我可以通過WMI獲取這些信息,但是這種方法存在很多問題,特別是它的速度很慢,但它也只是列表連接的設備(除了藍牙設備,可能連接並顯示,無論真實連接如何)

我寧願用Delphi/Obje編寫的解決方案ct Pascal,但任何其他語言對我來說都很好(WMI訪問代碼是從C#複製的)。

+0

使用SetupAPI。 –

回答

6

如果您使用可以讀取註冊表的編程語言/ API,請檢查子樹HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum

這有子鍵包含設備類型,設備類,實例ID。每個實例ID都有一個具有COM名稱的子項Device Parameters\PortName

例如,我的系統

ACPI\PNP0501\1\Device Parameters\PortName = COM1 
BTHENUM\{GUID}{ID}\Device Parameters\PortName = COM4 

在ID部分的按鍵上有額外的信息,例如

ACPI\PNP0501\1\FriendlyName = Kommunikationsanschluss (COM1) (german windows) 
ACPI\PNP0501\1\Service = Serial 
BTHENUM\{GUID}{ID}\Service = BTHMODEM 

用regedit檢查自己哪些部分是有趣的你。但是,這應該會給你所需要的所有信息。

+0

我一直在爬上來搜索一個獲取這些信息的方法。看到幾十個問題......至少同樣多的答案,這是目前爲止唯一的答案。非常感謝,你幫我解決了一個問題! – Renan

+0

我使用'hardware \ devicemap \ serialcomm',並在鍵名中提示它是什麼類型的設備,例如藍牙設備的\ Device \ BthModem0和USB設備的\ Device \ USBSER000。 – Codebeat

相關問題