gpt4 book ai didi

c# - 检测离散 GPU

转载 作者:太空狗 更新时间:2023-10-29 19:47:00 29 4
gpt4 key购买 nike

我的目标是使用 C# 检测多 GPU 系统上的独立 GPU(例如集成的 Intel HD Graphics + 独立的 AMD Radeon 卡)

我通常使用该代码:

String gpuName = String.Empty;

ManagementObjectCollection objectCollection =
new ManagementObjectSearcher("SELECT Name FROM Win32_VideoController").Get();

foreach (ManagementObject managementObject in objectCollection)
{
foreach (PropertyData propertyData in managementObject.Properties)
{
if ((gpuName == String.Empty) || (propertyData.Value.ToString().ToLower().IndexOf("intel") == -1))
{
gpuName = propertyData.Value.ToString();
break;
}
}
}

如上文所述,它对我的​​示例非常有用。

但不适合AMDVIA等(具体厂家我也不知道)集成卡。

那么是否有通用的方法来切断所有集成的 GPU?

最佳答案

要了解答案,我们需要了解内核模式驱动程序如何创 build 备。

要查看驱动程序列表,请从运行对话框中调用 msinfo32,选择软件环境-->系统驱动程序。从那里您可以看到系统上所有已注册的驱动程序,以及它们的启动模式(手动/启动/系统)和状态(运行/停止)。

drivers

当即插即用设备驱动程序加载(由即插即用管理器)时,每个驱动程序将创建一个或多个设备(使用IoCreateDevice)。然而,其中一些司机被归类为公交车司机。结果,系统将枚举该总线驱动程序报告的设备,并创建一棵树(从一个假想的“根”设备开始)。例如,如果 PCI 总线检测到一个设备,它就不知道该设备的任何信息(可能是网卡、声卡、视频卡等)。因此即插即用管理器将需要找到设备的适当驱动程序。任何嵌入式/集成设备(声音、网络、视频、USB、火线、SATA 等)都被同等对待,通常也是 PCI 设备。最终,操作系统不知道也不关心设备是嵌入式的还是离散的。

转到设备管理器,选择查看-->设备连接将显示创建的树。

device tree

因此,关于@Machinarius PInvoke 评论,PInvoke 在这里无济于事。但是,我同意他关于检测特性和功能的看法。请记住,我们不知道 future 会怎样,因此排除任何设备可能并不明智。任何需要协助的第 3 方代码都可能是硬编码值。

希望这对您有所帮助。

关于c# - 检测离散 GPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23262601/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com