في .NET 3.5 C #، هل هناك طريقة للكشف عن وضع NVIDIA SLI نشط

StackOverflow https://stackoverflow.com/questions/1890456

  •  19-09-2019
  •  | 
  •  

سؤال

بالنسبة لبطاقات الرسومات 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");
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top