2009-12-11 3 views

ответ

3

Это должно быть возможно.

Согласно документам nVidia, вы можете запросить этот via NVCPL.DLL (понравился документации).

Вызов, который будет использоваться, - NvCplGetDataInt() (стр. 67), с аргументом NVCPL_API_NUMBER_OF_SLI_GPUS или NVCPL_API_SLI_MULTI_GPU_RENDERING_MODE вы должны получить требуемую информацию.

Для доступа к этой информации вам потребуется P/Invoke. Если это нормально для статистической ссылки NVCPL.DLL, вам просто нужно создать правильный импорт (статический внешний метод), и все в порядке. В противном случае вы также можете выбрать способи GetEntryPoint и использовать класс Marshal для создания экземпляра делегата (объявленного правильными аргументами), который представляет вызываемую функцию.

Edit: Следующий фрагмент кода может вам начать (у меня нет карты 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"); 
    } 
} 
+1

nvcpl API теперь осуждается. Это больше не работает :( – docdocdoc9

Смежные вопросы