Куда мне обратиться, чтобы узнать магические числа, которые должны быть предоставлены nvapi_QueryInterface?
родолжение моего предыдущего вопроса:помогите с python ctypes и nvapi
Я публикую еще один вопрос, потому что я уже выбрал ответ в своем предыдущем вопросе, и теперь вопрос изменился.
Используя python, я пытаюсь запросить nvapi.dll, чтобы получить значение использования моего GPU.
Вот как бы вы сделали это в C # (см. Ниже):http://code.google.com/p/open-hardware-monitor/source/browse/trunk/Hardware/Nvidia/NVAPI.cs
Поскольку мне нужен только небольшой набор функций, я не хочу переключаться на использование другого языка. Я думаю, что ctypes должен быть в состоянии сделать это ... Я просто не могу понять, как это сделать. Я никогда прежде не использовал Python ctypes.
Чтобы запросить использование gpu, мне сначала нужно вызвать функцию NvAPI_Initialize. Также необходимо использовать интерфейс запроса для ссылки на функцию:
from ctypes import *
nvapi = WinDLL("nvapi.dll")
nvapi_QueryInterface = nvapi.nvapi_QueryInterface
Используя приведенный выше код, у меня есть доступ к nvapi_QueryInterface, но я не могу понять, как повторить эту часть:
private static void GetDelegate<T>(uint id, out T newDelegate)
where T : class
{
IntPtr ptr = nvapi_QueryInterface(id);
if (ptr != IntPtr.Zero)
{
newDelegate =
Marshal.GetDelegateForFunctionPointer(ptr, typeof(T)) as T;
}
else
{
newDelegate = null;
}
}
для ссылки на функции инициализации и использования:
GetDelegate(0x0150E828, out NvAPI_Initialize);
GetDelegate(0x189A1FDF, out NvAPI_GPU_GetUsages);
Мое понимание этого может все еще быть неправильным, но я потратил много времени, пытаясь понять это, поэтому я надеюсь, что кто-то может помочь подтолкнуть меня в правильном направлении, потому что я немного растерялся относительно того, как действовать дальше.
Может ли кто-нибудь помочь мне понять, как я могу заставить эту небольшую часть кода работать непосредственно в Python? Мне просто нужно иметь возможность вызвать функцию NvAPI_GPU_GetUsages в конце дня.
Благодарю.