如何通过c ++区分专用和集成的gpu卡?

Mic*_*Cic 7 c++ windows wmi

我想通过WMI或c ++中的其他方式知道用户是否已集成或专用GPU卡?

我已经通过Win32_VideoController,找不到任何可以帮助我区分这两者的东西.

提前致谢.

Bil*_*Cao 0

令人惊讶的是,这么多年了,没有人提出这个想法。大多数人都说不可能,确实Windows原生并没有提供任何手段来检测是iGPU还是dGPU。然而,如果你能忍受这些限制的话,我设法让它在一定程度上发挥作用。总体思路是,您可以使用 wmic 获取已安装 CPU 的名称,并维护所有具有集成显卡的 CPU 的列表(该列表可能很短,具体取决于您需要此功能的用途。)对于较新的 CPU 型号,例如第 9 代或更新的英特尔台式机处理器和 AMD Ryzen 1000 及更新的处理器,您可以简单地通过 CPU 命名来辨别。不带集成显卡的Intel 处理器将以字母 F 结尾,而集成显卡的 AMD 处理器以字母 G 结尾。然后您可以使用 wmic 获取所有 GPU(包括 iGPU)的列表,并通过计算安装的 GPU 数量,您可以轻松判断用户是否拥有 iGPU 或 dGPU,因为不可能拥有超过 1 个 iGPU。因此,如果您检测到CPU带有iGPU,并且wmic只报告1个GPU,那么您就知道它肯定是iGPU。另一方面,如果报告了多个 GPU,您就知道其中一个肯定是 dGPU。当然,如果用户自己手动禁用 iGPU,这不起作用,因此我说这种方法有局限性。