NVAPI.dll - Grafikspeicher/-auslastung auslesen

  • Hallo,

    ich möchte den gesamten Grafikspeicher, sowie die Auslastung von Selbigen über die NVAPI.dll auslesen.
    Nun habe ich bereits die Funktion für die Auslastung der GPU von der NVAPI (NvAPI_GPU_GetUsages) am laufen und da ist alles super.

    Nur bin ich mir a) nicht sicher welche Funktion der NVAPI.dll mir meine gewünschten Werte auslesen und habe b) bei den Funktionen mit denen ich rumprobiert habe (z.B. NvAPI_GPU_GetMemoryInfo) noch keinen Erfolg gehabt.

    Beim googlen habe ich diesen C#-Code gefunden, steige aber auch da noch nicht ganz durch:

    Spoiler anzeigen

    NvMemoryInfo memoryInfo = new NvMemoryInfo();
    memoryInfo.Version = NVAPI.GPU_MEMORY_INFO_VER;
    memoryInfo.Values = new uint[NVAPI.MAX_MEMORY_VALUES_PER_GPU];
    if (NVAPI.NvAPI_GPU_GetMemoryInfo != null && displayHandle.HasValue &&
    NVAPI.NvAPI_GPU_GetMemoryInfo(displayHandle.Value, ref memoryInfo) ==
    NvStatus.OK) {
    uint totalMemory = memoryInfo.Values[0];
    uint freeMemory = memoryInfo.Values[4];
    float usedMemory = Math.Max(totalMemory - freeMemory, 0);
    memoryLoad.Value = 100f * usedMemory / totalMemory;
    ActivateSensor(memoryLoad);

    Quelle: http://open-hardware-monitor.googlecode.com/svn/trunk/Hard…ia/NvidiaGPU.cs


    Würde mich über Anregungen und Tipps freuen, da ich so langsam mit meinem Latein am Ende bin.

    MfG,

    be_cracked

  • Ok habe jetzt nochmal mir die Finger wund gegoogelt und bin dabei als einzig hilfreiches über folgende Funktion gestolpert.


    von folgender Adresse http://www.autoitscript.com/forum/topic/152858-cc-to-autoit/
    mein Problem ist das selbe wie es in der quelle beschrieben wird, dass es mir bei den Funktionen NvAPI_GPU_GetMemoryInfo, sowie NvAPI_GPU_GetThermalSettings nur den Wert -9 zurückgibt.
    interessanterweise funktioniert die Funktion NvAPI_GPU_GetUsages einwandfrei.
    Da ich wirklich keine Ahnung von DLLs habe, bitte ich einfach nochmal ob mir irgendjemand damit helfen kann und mir den Fehler im Code nennen kann.

  • Kann es sein, dass du dich mit der Funktionsweise von DllCall noch nicht auseinander gesetzt hast?
    Bugfix hat dazu mal ein gutes Tutorial gemacht. Du findest es in seiner Signatur (glaube ich).

    Einmal editiert, zuletzt von CentuCore (13. Mai 2014 um 13:16)