【问题标题】:What are SetupAPI,SetupAPI1,and SetupAPI2? And what the difference between them?什么是 SetupAPI、SetupAPI1 和 SetupAPI2?他们之间有什么区别?
【发布时间】:2015-11-23 04:02:52
【问题描述】:

最近,我需要用C++在MFC中实现一个小功能,用于获取可用串口的列表。然后我看到了this。我需要知道什么是 SetupAPI1 和 SetupAPI2?当我想用这种方式实现我的功能时,我在哪里可以得到setup.dll?在搜索互联网时,我发现有一个SetupAPI,但它似乎是另一个。现在,我对这些 SetupAPI、SetupAPI1 和 SetupAPI2 感到非常困惑。有什么区别?他们来自哪里?而且,如果我想使用它们,我该如何获得它们?

【问题讨论】:

  • 您提到的SO link 指向EnumSerialPorts v1.27,由PJ Naughter 编写。 EnumSerialPorts 中的函数 SetupAPI1() 和 SetupAPI2() 都使用 Windows 设备管理器“SetupDi”API。这正是您在帖子中询问的SetupAPI。 '希望有帮助!
  • 非常感谢!!这很有帮助。

标签: c++ windows winapi mfc


【解决方案1】:

没有SetupAPI1和SetupAPI2这样的想法。有一个名为 SetupAPI 的库。

您链接到的这个答案是指名为EnumSerialPort 的库。从该页面:

代码在内部提供了 9 种不同的方式(是的,你没看错:九种)枚举串行端口:使用 CreateFile、QueryDosDevice、GetDefaultCommConfig,两种使用 Setup API、EnumPorts、WMI、Com 数据库的方式和枚举下的值注册表项 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 P>

这个库提供了两种依赖于 SetupAPI 的不同方法,并简单地将它们编号为 1 和 2。您可以通过以下链接查看这些详细信息和更多信息。

【讨论】:

  • 哦,非常感谢!直到我看到答案,我终于意识到了 EnumSerialPort 的 9 种方式。除了参考 EnumSerialPort 外,还有 CreateFile,registry key...等其他方式可以列出串口。所以,当我看到 9 种方式时,我没有意识到它们都指的是 EnumSerialPort 。我是多么愚蠢。
猜你喜欢
  • 2014-03-20
  • 1970-01-01
  • 2021-08-10
  • 2012-08-29
  • 1970-01-01
  • 1970-01-01
  • 2014-07-10
  • 2010-10-18
  • 2015-05-08
相关资源
最近更新 更多