我尝试使用 C++ 和 SetupAPI 找出 Windows 上当前活动的图形驱动程序的版本。解决方案大致看起来像
- 呼吁。
SetupDiGetClassDevs
_GUID_DEVCLASS_DISPLAY
- 调用
SetupDiBuildDriverInfoList
结果集。 - 调用
SetupDiEnumDriverInfo
带有 的设备集SPDIT_COMPATDRIVER
,它为我提供了与 GPU 兼容的所有已知驱动程序。
结果包括来自 Microsoft 的后备驱动程序,我可以轻松地排除它,但它还包括已安装在系统上的所有驱动程序版本(来自 NVIDIA)。
问题是:我如何找出哪些驱动程序实际上正在运行?
我从SP_DEVINFO_DATA
步骤 1 中返回的结果中知道如何调用驱动程序服务,并且我还获得了某种注册表项,但我看不出如何将其与SP_DRVINFO_DATA
. 我也知道 NVAPI 提供驱动程序管理功能,但我更喜欢与各种供应商的 GPU 配合使用的解决方案。