以编程方式查看移动计算机(笔记本电脑/平板电脑等)是否连接到扩展坞



我正在编写一些软件,这些软件需要在连接到扩展坞的移动设备上表现不同。因此,我需要一种编程方法来检查计算机是否已连接到 C#/.NET 中的扩展坞。

我尝试了以下方法:

  • P/调用 GetCurrentHwProfile 函数。
  • P/调用CM_Is_Dock_Station_Present函数。
  • 在 WMI 的Win32_SystemEnclosure中查找坞站机箱类型。

不幸的是,这些似乎都没有在"一刀切"的情况下起作用。它们适用于我的某些测试设备,但不适用于其他设备。

我需要跨各种设备和扩展坞运行。是否有任何一致、可靠的方法来检查设备是否停靠在 Windows 中?

没有通用的方法来判断这一点。许多扩展坞只是显示为USB集线器,连接了一堆设备并复制了一些IO端口,有些实际上确实表现为"扩展坞",这将允许您已经尝试过的内容。

您可能必须做的是使用完整的硬件分析进行检查。要求用户断开与笔记本电脑的坞站连接,检查所有连接的设备,要求用户将其与笔记本电脑对接,然后再次检查。您需要检查 PCI 和 USB 总线上的所有可枚举设备。

您还必须做一些魔术来应对可移动设备,因此您必须要求用户在两次检查之前将它们全部删除。

您可以考虑使用 GetCurrentHwProfile 并检查返回HW_PROFILE_INFO的dwDockInfo文件。

最新更新