使用 SetupAPI 找出活动图形驱动程序
Find out the active graphics driver using SetupAPI
我尝试使用C++和SetupAPI找出Windows上当前活动图形驱动程序的版本。解决方案大致看起来像
- 致电
SetupDiGetClassDevs
GUID_DEVCLASS_DISPLAY
。 - 调用结果集的
SetupDiBuildDriverInfoList
。 - 调用
SetupDiEnumDriverInfo
以设置带有SPDIT_COMPATDRIVER
的设备,这为我提供了与 GPU 兼容的所有已知驱动程序。
结果包括来自Microsoft的回退驱动程序,我可以轻松删除,但它还包括系统上已安装的所有驱动程序版本(来自 NVIDIA(。
问题是:如何找出哪些驱动程序实际正在运行?
我从步骤 1 中返回的SP_DEVINFO_DATA
中知道驱动程序服务的调用方式,并且我还获得了某种注册表项,但我看不出如何将其与SP_DRVINFO_DATA
联系起来。我也知道 NVAPI 提供驱动程序管理功能,但我更喜欢与各种供应商的 GPU 配合使用的解决方案。
仅
供参考,您还可以通过SetupDiGetDeviceRegistryProperty
查询SPDRP_DRIVER
,然后在ComputerHKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass
下查找该注册表值。该密钥包含所有驱动程序信息。下面是来自 WebKit 的一些示例代码,它实际上以这种方式检索 GPU 信息。
我同时在为什么SetupDiEnumDriverInfo为我的驱动程序提供两个版本号中找到了解决方案: 您需要在步骤 3 之前更新使用 DI_FLAGSEX_INSTALLEDDRIVER
标志设置的设备信息的安装参数。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 使用mongocxx驱动程序时包含头文件问题
- void*到驱动程序中的UnicodeString
- C++驱动程序看不到头文件
- 用于创建/注册虚拟存储设备的 IOKit 驱动程序
- 员工测试驱动程序数据结构
- 获取 OID(类型::b_oid)作为 MongoDB C++驱动程序中的字符串
- 如何在 c++ 中映射驱动程序?
- 如何在 cuda 中将 kd 树从主机复制到驱动程序
- Visual Studio 如何在内核模式驱动程序项目中使用C++标准库?
- 为什么我的驱动程序只读取部分字符串?
- 使用 SetupAPI 找出活动图形驱动程序
- 图形驱动程序如何通过程序从CPU到GPU进行通信
- 识别崩溃的图形驱动程序
- AntTweakBar导致图形驱动程序崩溃
- 图形驱动程序会导致我的应用程序内存泄漏吗
- 设备驱动程序和图形的类设计
- 使用IBM 3514 Borland图形接口驱动程序在高分辨率模式下Turbo c++在Windows 7 64位操作系
- 我如何确定为什么OpenGL入口点丢失后更新我的图形驱动程序