如何使用 Windows API 查询 Intel 集成显卡型号

2021-11-15 12:58:27 +08:00
 forcecharlie

我最近写了一个命令像 neofetch/screenfetch 获得基本的电脑和硬件信息,使用 IDXGIFactory1::EnumAdapters1 接口(或者 WMI )可以获得显卡的型号,但 Intel 集成显卡只会显示 Intel (R) UHD Graphics 而不是像 Mac 一样显示 Intel UHD Graphics 630,请有什么方式能够通过编程手段获得 Intel 集显的具体型号?谢谢。

https://github.com/baulk/baulk/pull/40

1871 次点击
所在节点    Windows
10 条回复
ysc3839
2021-11-15 13:14:05 +08:00
macOS 估计是根据 PCI ID 去读一个预先定义好的表的。这种情况只能自己维护一个这样的表。
HandSonic
2021-11-15 13:17:04 +08:00
ysc3839
2021-11-15 13:21:29 +08:00
顺带一提,你代码中 adapter 忘记 Release 了
https://github.com/baulk/baulk/blob/f51d90aa0915a5c5d65a197c06d520c167495ca2/include/baulk/brand.hpp#L444
个人建议使用 wil https://github.com/microsoft/wil 的智能指针。
invdan
2021-11-15 13:27:09 +08:00
2 楼正解,你这是十代 GPU 就是没有标明型号,性能测试还不如上一代
weiceshi
2021-11-15 13:39:52 +08:00
你先用 powershell 运行下面的命令看看能不能正确打印呢?
(Get-WmiObject Win32_VideoController -ComputerName .).Name
我同样是 10 代 U(i7-10700),是可以正确打印出 "Intel(R) UHD Graphics 630" 的

你如果能打印出来,那就参考下 powershell core 代码里 Get-WmiObject 的实现 https://github.com/PowerShell/PowerShell/blob/7dc4587014bfa22919c933607bf564f0ba53db2e/src/Microsoft.PowerShell.Commands.Management/commands/management/GetWMIObjectCommand.cs
invdan
2021-11-15 15:33:03 +08:00
@weiceshi 你这是 10700 ,目测楼主的是十代的 i7 10710U,笔记本 U
icepie
2021-11-15 15:37:07 +08:00
参考一下 winfetch ? (忘记它有没有实现这个功能了)
forcecharlie
2021-11-15 16:21:08 +08:00
@ysc3839 fixed 。我自己的 bela 库实现了 comptr ,下班去优化下。
forcecharlie
2021-11-15 16:21:49 +08:00
@invdan 我的一台小新的 10710U 。一台 NUC 也是这个 U 。
invdan
2021-11-15 18:27:32 +08:00
@forcecharlie 恩,nuc 官方的参数就是 Intel (R) UHD Graphics ,并没有具体型号,性能不如 630 ,UHD 应该是 32EU

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/815483

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX