在.NET 3.5 C#中,是否可以检测NVIDIA SLI模式是否处于活动状态
题
对于NVIDIA图形卡,您可以有两张(SLI)工作。对于.NET桌面应用程序,我需要能够检查启用SLI。这可能吗?
解决方案
那应该是可能的。
根据NVIDIA文档,您可以查询此 通过nvcpl.dll (喜欢文档)。
要使用的电话是 NvCplGetDataInt()
(第67页),参数 NVCPL_API_NUMBER_OF_SLI_GPUS
或者 NVCPL_API_SLI_MULTI_GPU_RENDERING_MODE
您应该获取所需的信息。
在访问此信息的ODER中,您需要P/Invoke。如果可以统计上的链接 NVCPL.DLL
您只需要创建正确的导入(静态外部方法)就可以了。否则,您也可以选择 LoadLibrary
和 GetEntryPoint
方式并使用 Marshal
类创建代表要调用函数的委托人实例(用正确的参数声明)。
编辑:以下片段可能会让您入门(不过我没有NVIDIA卡,所以这是完全未经测试的,并且您自身的风险;):):):
public const int NVCPL_API_NUMBER_OF_GPUS =7; // Graphics card number of GPUs.
public const int NVCPL_API_NUMBER_OF_SLI_GPUS = 8; // Graphics card number of SLI GPU clusters available.
public const int NVCPL_API_SLI_MULTI_GPU_RENDERING_MODE = 9; // Get/Set SLI multi-GPU redering mode.
[DllImport("NVCPL.DLL", CallingConvention=CallingConvention.Cdecl)]
public static extern bool nvCplGetDataInt([In] int lFlag, [Out] out int plInfo);
public static void Main() {
int sliGpuCount;
if (nvCplGetDataInt(NVCPL_API_NUMBER_OF_SLI_GPUS, out sliGpuCount)) {
// we got the result
Console.WriteLine(string.Format("SLI GPU present: {0}", sliGpuCount));
} else {
// something did go wrong
Console.WriteLine("Failed to query NV data");
}
}
不隶属于 StackOverflow