首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用nvapi获取gpu的全称和用法

使用nvapi获取gpu的全称和用法
EN

Stack Overflow用户
提问于 2020-08-02 16:39:40
回答 2查看 458关注 0票数 0

我正在尝试使用nvapi.dll获取我的图形处理器的全名和我的图形处理器使用情况。我在这个网站上遇到了这篇文章:C# Performance Counter Help, Nvidia GPU

他使用了两个源,一个在dll本身(用于获取用法),全名使用从nevidia网站下载的nvapi的头文件。

有什么方法可以在我的项目中避免这种重复吗?只使用dll或只使用nevidia带来的头文件。感谢所有的帮手

EN

回答 2

Stack Overflow用户

发布于 2020-08-02 17:15:18

您可以在需要时动态加载DLL文件,

在c#中,您可以使用.Net反射(如果dll是在.Net框架中开发的),例如:

代码语言:javascript
复制
var DLL = Assembly.LoadFile(@"path\to\your.dll");

Type t = DLL.GetType("myAssembly.ClassName");
CustomType result = t.InvokeMember("methodName", BindingFlags.InvokeMethod, null, t, new object[] { @"method argument" }); 

如果提到的动态链接库不是在.Net框架下开发的,但您被迫使用.Net框架(更多信息请参见this):

代码语言:javascript
复制
int hModule = LoadLibrary(@"path\to\your.dll");
if (hModule == 0) return false;
IntPtr intPtr = GetProcAddress(hModule, "yourmethod_PTR");

如果你想在c/c++中使用,你可以使用下面的代码:

代码语言:javascript
复制
HINSTANCE hGetProcIDDLL = LoadLibrary("path\\to\\your.dll");

if (hGetProcIDDLL == NULL) {
   std::cout << "dll not found" << std::endl;
} 

int a = function_to_call("arguments");

注意:如果你想加载来自未知来源的dll,我建议使用c/c++,因为在c/c++中,你可以更容易地管理内存,并在加载dll后释放所有资源。

票数 1
EN

Stack Overflow用户

发布于 2020-08-02 19:16:39

我在https://github.com/processhacker/plugins-extra/blob/master/NvGpuPlugin/nvidia.c中找到了函数id的列表

除了http://eliang.blogspot.com/2011/05/getting-nvidia-gpu-usage-in-c.html之外

我声明为typedef int(*nvAPI_GPU_getFullName_t)(int *handle , char* name); nvAPI_GPU_getFullName_t nvAPI_GPU_getFullName=NULL; nvAPI_GPU_getFullName=(nvAPI_GPU_getFullName_t)(*NvAPI_QueryInterface)(0xCEEE8e9FUL);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63214032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档