在.NET 3.5 C#中,是否有方法检测NVIDIA SLI模式是否处于活动状态

在.NET 3.5 C#中,是否有方法检测NVIDIA SLI模式是否处于活动状态,c#,.net,nvidia,sli,C#,.net,Nvidia,Sli,对于NVIDIA图形卡,您可以有两个作为一个(SLI)工作。对于.NET桌面应用程序,我需要能够检查SLI是否已启用。这可能吗?这应该是可能的 根据英伟达文档,您可以查询这个(喜欢文档)。 要使用的调用是NvCplGetDataInt()(第67页),参数为NVCPL\u API\u NUMBER\u OF_SLI\u GPU或NVCPL\u API\u SLI\u MULTI\u GPU RENDERING\u MODE,您应该获得所需的信息 为了访问此信息,您需要p/Invoke。如果可以统

对于NVIDIA图形卡,您可以有两个作为一个(SLI)工作。对于.NET桌面应用程序,我需要能够检查SLI是否已启用。这可能吗?

这应该是可能的

根据英伟达文档,您可以查询这个(喜欢文档)。 要使用的调用是
NvCplGetDataInt()
(第67页),参数为
NVCPL\u API\u NUMBER\u OF_SLI\u GPU
NVCPL\u API\u SLI\u MULTI\u GPU RENDERING\u MODE
,您应该获得所需的信息

为了访问此信息,您需要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");
    }
}