2015-11-23 441 views
3

最近,我需要通過C++實現MFC中的一個小函數,該函數用於獲取可用串口的列表。然後我看到了this。我需要知道什麼是SetupAPI1和SetupAPI2?當我想用這種方式來實現我的功能時,我在哪裏可以獲得setup.dll?在搜索互聯網時,我發現有一個SetupAPI,但它似乎是另一個。現在,我非常困惑這些SetupAPI,SetupAPI1和SetupAPI2。有什麼區別?他們來自哪裏?而且,如果我想要使用它們,我怎麼能得到它們?什麼是SetupAPI,SetupAPI1和SetupAPI2?他們之間有什麼區別?

+0

的[SO鏈接](http://stackoverflow.com/questions/1388871/)你提到指向[EnumSerialPorts v1.27(http://www.naughter.com/enumser.html),寫PJ女兒。 EnumSerialPorts中的函數SetupAPI1()和SetupAPI2()都使用Windows設備管理器「SetupDi」API。這正是您在帖子中詢問的[SetupAPI](https://msdn.microsoft.com/en-us/library/windows/hardware/ff550855%28v=vs.85%29.aspx)。 '希望有所幫助! – paulsm4

+0

非常感謝!這是幫助。 – Sophie

回答

2

沒有這樣的想法像SetupAPI1和SetupAPI2。有一個名爲SetupAPI的庫。

這個答案你鏈接到引用名爲EnumSerialPort庫。從這個頁面:

內部代碼提供了9種不同的方式(是的,你沒看錯:九)枚舉串口:使用的CreateFile,QueryDosDevice,GetDefaultCommConfig,使用安裝程序API,EnumPorts兩種方式,WMI,玉米數據庫&枚舉註冊表項HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM下的值。

...

所有由以下預處理值來控制該代碼的構成的:CENUMERATESERIAL_USE_STL,_AFX,NO_ENUMSERIAL_USING_CREATEFILE,NO_ENUMSERIAL_USING_QUERYDOSDEVICE,NO_ENUMSERIAL_USING_GETDEFAULTCOMMCONFIG,NO_ENUMSERIAL_USING_SETUPAPI1,NO_ENUMSERIAL_USING_SETUPAPI2,NO_ENUMSERIAL_USING_ENUMPORTS,NO_ENUMSERIAL_USING_WMI,NO_ENUMSERIAL_USING_COMDB & NO_ENUMSERIAL_USING_REGISTRY。

這個庫提供了兩種不同的方法,依賴於SetupAPI,並簡單地給它們一個和兩個數字。您可以通過以下鏈接查看這些詳細信息和更多信息。

+0

噢,非常感謝!直到我看到了答案,我終於實現了EnumSerialPort的9種方式。除了引用EnumSerialPort還有其他方法,如CreateFile,註冊表鍵...可以列出串行端口。所以,當我看到我沒有意識到的9種方式時,都提到了EnumSerialPort。我多麼愚蠢。 – Sophie

相關問題