如何在安装驱动程序之前在C ++中获取GPU信息

时间:2012-05-09 12:48:43

标签: c++ windows drivers

我们有一款软件可以运行在几种不同的显卡上,包括ATI和NVIDIA。我需要能够在安装驱动程序之前确定显卡的设备ID或型号名称,以便我可以创建一个硬盘驱动器映像,可以使用我们支持的任何显卡启动它,拥有它首次启动时检测显卡,安装驱动程序然后重启。目标平台是WinXP。

我尝试使用WMI,但只能检索有关显示适配器的信息,不包括设备ID,在安装驱动程序之前,显示适配器只会包含“视频控制器(VGA)”等通用数据这个名字等等。

EnumDisplayDevices在安装驱动程序之前无法检测到设备。

这必须是可能的,因为当新硬件向导打开时,它知道显卡的名称,但我找不到这样做的方法。

有什么想法吗?

编辑 - 这是查询

ExecQuery(bstr_t("WQL"),bstr_t("SELECT * FROM Win32_PnPEntity WHERE DeviceID LIKE 'PCI\\VEN'"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator);

1 个答案:

答案 0 :(得分:2)

为了将来参考其他用户,我将添加自己的答案。

与我在帖子中所说的相反,WMI实际上可以检测到已卸载的设备,通过查询Win32_PNPEntity,您可以获取其设备ID。